pax_global_header00006660000000000000000000000064112777617710014532gustar00rootroot0000000000000052 comment=6106bcb71233f7b25dcbfe86944961c68d58846f libsmi-0.4.8+dfsg2/000077500000000000000000000000001127776177100140235ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/ANNOUNCE000066400000000000000000000060761127776177100151650ustar00rootroot00000000000000From: 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 libsmi-0.4.8+dfsg2/COPYING000066400000000000000000000102361127776177100150600ustar00rootroot00000000000000 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. ------------------------------------------------------------------------------ libsmi-0.4.8+dfsg2/ChangeLog000066400000000000000000001767631127776177100156210ustar00rootroot00000000000000 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. libsmi-0.4.8+dfsg2/Makefile.am000066400000000000000000000016321127776177100160610ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/Makefile.in000066400000000000000000000547511127776177100161040ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/README000066400000000000000000000077761127776177100147240ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/THANKS000066400000000000000000000054341127776177100147440ustar00rootroot00000000000000libsmi 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 libsmi-0.4.8+dfsg2/TODO000066400000000000000000000135161127776177100145210ustar00rootroot00000000000000o 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) libsmi-0.4.8+dfsg2/aclocal.m4000066400000000000000000007770511127776177100157040ustar00rootroot00000000000000# 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 libsmi-0.4.8+dfsg2/config.guess000077500000000000000000001262601127776177100163520ustar00rootroot00000000000000#! /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: libsmi-0.4.8+dfsg2/config.h.in000066400000000000000000000067761127776177100160660ustar00rootroot00000000000000/* 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 libsmi-0.4.8+dfsg2/config.sub000077500000000000000000000773001127776177100160150ustar00rootroot00000000000000#! /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: libsmi-0.4.8+dfsg2/configure000077500000000000000000025766321127776177100157570ustar00rootroot00000000000000#! /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 libsmi-0.4.8+dfsg2/configure.in000066400000000000000000000212631127776177100163400ustar00rootroot00000000000000# # 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 ) libsmi-0.4.8+dfsg2/depcomp000077500000000000000000000422461127776177100154100ustar00rootroot00000000000000#! /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: libsmi-0.4.8+dfsg2/doc/000077500000000000000000000000001127776177100145705ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/doc/Makefile.am000066400000000000000000000010171127776177100166230ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/doc/Makefile.in000066400000000000000000000225541127776177100166450ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/doc/ibrpib-assignments.txt000066400000000000000000000023471127776177100211370ustar00rootroot00000000000000Assignments 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 libsmi-0.4.8+dfsg2/doc/smi.dia000066400000000000000000002274141127776177100160510ustar00rootroot00000000000000 #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 # libsmi-0.4.8+dfsg2/doc/smi.xsd000066400000000000000000000432331127776177100161050ustar00rootroot00000000000000 libsmi-0.4.8+dfsg2/install-sh000077500000000000000000000316001127776177100160270ustar00rootroot00000000000000#!/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: libsmi-0.4.8+dfsg2/lib/000077500000000000000000000000001127776177100145715ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/lib/Makefile.am000066400000000000000000000037121127776177100166300ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/lib/Makefile.in000066400000000000000000000535701127776177100166500ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/lib/check.c000066400000000000000000001640271127776177100160240ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/lib/check.h000066400000000000000000000040141127776177100160160ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/data.c000066400000000000000000003306121127776177100156530ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/lib/data.h000066400000000000000000000454501127776177100156630ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/error.c000066400000000000000000001356751127776177100161070ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/lib/error.h000066400000000000000000000020271127776177100160740ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/errormacros.h000066400000000000000000000414771127776177100173150ustar00rootroot00000000000000#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 libsmi-0.4.8+dfsg2/lib/libsmi.3000066400000000000000000000044211127776177100161350ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/libsmi.3.in000066400000000000000000000044141127776177100165440ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/parser-smi.c000066400000000000000000012065111127776177100170250ustar00rootroot00000000000000/* 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 libsmi-0.4.8+dfsg2/lib/parser-smi.h000066400000000000000000000010021127776177100170150ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/parser-smi.tab.h000066400000000000000000000165251127776177100176020ustar00rootroot00000000000000/* 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 libsmi-0.4.8+dfsg2/lib/parser-smi.y000066400000000000000000006355631127776177100170670ustar00rootroot00000000000000/* * 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 libsmi-0.4.8+dfsg2/lib/parser-sming.c000066400000000000000000005017741127776177100173620ustar00rootroot00000000000000/* 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 libsmi-0.4.8+dfsg2/lib/parser-sming.h000066400000000000000000000010161127776177100173470ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/parser-sming.tab.h000066400000000000000000000145411127776177100201230ustar00rootroot00000000000000/* 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 libsmi-0.4.8+dfsg2/lib/parser-sming.y000066400000000000000000002075431127776177100174050ustar00rootroot00000000000000/* * 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 libsmi-0.4.8+dfsg2/lib/scanner-smi.c000066400000000000000000020541451127776177100171670ustar00rootroot00000000000000 #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" libsmi-0.4.8+dfsg2/lib/scanner-smi.h000066400000000000000000000012021127776177100171540ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/scanner-smi.l000066400000000000000000000415651127776177100172000ustar00rootroot00000000000000/* * 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); } %% libsmi-0.4.8+dfsg2/lib/scanner-sming.c000066400000000000000000010133551127776177100175110ustar00rootroot00000000000000 #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 libsmi-0.4.8+dfsg2/lib/scanner-sming.h000066400000000000000000000012221127776177100175030ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/scanner-sming.l000066400000000000000000000236461127776177100175250ustar00rootroot00000000000000/* * 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 libsmi-0.4.8+dfsg2/lib/smi.c000066400000000000000000001576711127776177100155460ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/lib/smi.h000066400000000000000000000537051127776177100155440ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/smi.h.in000066400000000000000000000540201127776177100161400ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/lib/smi_attribute.3000066400000000000000000000115521127776177100175340ustar00rootroot00000000000000.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 libsmi-0.4.8+dfsg2/lib/smi_attribute.3.in000066400000000000000000000115451127776177100201430ustar00rootroot00000000000000.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 libsmi-0.4.8+dfsg2/lib/smi_class.3000066400000000000000000000051211127776177100166310ustar00rootroot00000000000000.\" .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 libsmi-0.4.8+dfsg2/lib/smi_class.3.in000066400000000000000000000051141127776177100172400ustar00rootroot00000000000000.\" .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 libsmi-0.4.8+dfsg2/lib/smi_config.3000066400000000000000000000215131127776177100167740ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_config.3.in000066400000000000000000000211521127776177100174000ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_event.3000066400000000000000000000030551127776177100166510ustar00rootroot00000000000000.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 libsmi-0.4.8+dfsg2/lib/smi_event.3.in000066400000000000000000000030501127776177100172510ustar00rootroot00000000000000.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 libsmi-0.4.8+dfsg2/lib/smi_identity.3000066400000000000000000000042771127776177100173700ustar00rootroot00000000000000.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 libsmi-0.4.8+dfsg2/lib/smi_identity.3.in000066400000000000000000000042721127776177100177700ustar00rootroot00000000000000.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 libsmi-0.4.8+dfsg2/lib/smi_macro.3000066400000000000000000000040611127776177100166270ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_macro.3.in000066400000000000000000000040541127776177100172360ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_module.3000066400000000000000000000100771127776177100170170ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_module.3.in000066400000000000000000000100721127776177100174170ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_node.3000066400000000000000000000170231127776177100164550ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_node.3.in000066400000000000000000000170161127776177100170640ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_render.3000066400000000000000000000061131127776177100170050ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_render.3.in000066400000000000000000000061131127776177100174120ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_type.3000066400000000000000000000076031127776177100165140ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_type.3.in000066400000000000000000000075761127776177100171320ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_util.3000066400000000000000000000013401127776177100165000ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/smi_util.3.in000066400000000000000000000013331127776177100171070ustar00rootroot00000000000000.\" .\" $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 libsmi-0.4.8+dfsg2/lib/snprintf.c000066400000000000000000000314171127776177100166060ustar00rootroot00000000000000/* * 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 libsmi-0.4.8+dfsg2/lib/snprintf.h000066400000000000000000000043021127776177100166040ustar00rootroot00000000000000/* * 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); libsmi-0.4.8+dfsg2/lib/util.c000066400000000000000000000057361127776177100157250ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/lib/util.h000066400000000000000000000020501127776177100157140ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/libsmi.m4000066400000000000000000000016021127776177100155430ustar00rootroot00000000000000# 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] ) ]) libsmi-0.4.8+dfsg2/libsmi.pc000066400000000000000000000003271127776177100156300ustar00rootroot00000000000000prefix=/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} libsmi-0.4.8+dfsg2/libsmi.pc.in000066400000000000000000000003161127776177100162330ustar00rootroot00000000000000prefix=@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} libsmi-0.4.8+dfsg2/ltmain.sh000066400000000000000000006001571127776177100156540ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/mibs/000077500000000000000000000000001127776177100147555ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/mibs/Makefile.am000066400000000000000000000006361127776177100170160ustar00rootroot00000000000000# # 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) libsmi-0.4.8+dfsg2/mibs/Makefile.in000066400000000000000000000353011127776177100170240ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/mibs/iana/000077500000000000000000000000001127776177100156655ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/mibs/iana/Makefile.am000066400000000000000000000025401127776177100177220ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/mibs/iana/Makefile.in000066400000000000000000000264061127776177100177420ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/mibs/ietf/000077500000000000000000000000001127776177100157045ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/mibs/ietf/Makefile.am000066400000000000000000000007651127776177100177500ustar00rootroot00000000000000# # 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) libsmi-0.4.8+dfsg2/mibs/ietf/Makefile.in000066400000000000000000000246211127776177100177560ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/mibs/irtf/000077500000000000000000000000001127776177100157215ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/mibs/irtf/Makefile.am000066400000000000000000000007651127776177100177650ustar00rootroot00000000000000# # 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) libsmi-0.4.8+dfsg2/mibs/irtf/Makefile.in000066400000000000000000000246211127776177100177730ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/mibs/site/000077500000000000000000000000001127776177100157215ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/mibs/site/Makefile.am000066400000000000000000000007651127776177100177650ustar00rootroot00000000000000# # 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) libsmi-0.4.8+dfsg2/mibs/site/Makefile.in000066400000000000000000000246211127776177100177730ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/mibs/tubs/000077500000000000000000000000001127776177100157325ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/mibs/tubs/Makefile.am000066400000000000000000000007651127776177100177760ustar00rootroot00000000000000# # 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) libsmi-0.4.8+dfsg2/mibs/tubs/Makefile.in000066400000000000000000000246211127776177100200040ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/missing000077500000000000000000000255771127776177100154420ustar00rootroot00000000000000#! /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: libsmi-0.4.8+dfsg2/pibs/000077500000000000000000000000001127776177100147605ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/pibs/Makefile.am000066400000000000000000000011171127776177100170140ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/pibs/Makefile.in000066400000000000000000000376751127776177100170470ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/pibs/ietf/000077500000000000000000000000001127776177100157075ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/pibs/ietf/COPS-PR-SPPI000066400000000000000000000314341127776177100174730ustar00rootroot00000000000000COPS-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 libsmi-0.4.8+dfsg2/pibs/ietf/COPS-PR-SPPI-TC000066400000000000000000000076461127776177100200070ustar00rootroot00000000000000COPS-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 libsmi-0.4.8+dfsg2/pibs/ietf/DIFFSERV-PIB000066400000000000000000003022101127776177100174500ustar00rootroot00000000000000DIFFSERV-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 libsmi-0.4.8+dfsg2/pibs/ietf/FRAMEWORK-FEEDBACK-PIB000066400000000000000000001010441127776177100207210ustar00rootroot00000000000000FRAMEWORK-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 libsmi-0.4.8+dfsg2/pibs/ietf/FRAMEWORK-PIB000066400000000000000000002271011127776177100176020ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/pibs/ietf/FRAMEWORK-TC-PIB000066400000000000000000000242451127776177100201120ustar00rootroot00000000000000FRAMEWORK-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 libsmi-0.4.8+dfsg2/pibs/ietf/Makefile.am000066400000000000000000000006521127776177100177460ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/pibs/ietf/Makefile.in000066400000000000000000000224151127776177100177600ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/pibs/site/000077500000000000000000000000001127776177100157245ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/pibs/site/Makefile.am000066400000000000000000000006521127776177100177630ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/pibs/site/Makefile.in000066400000000000000000000224151127776177100177750ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/pibs/tubs/000077500000000000000000000000001127776177100157355ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/pibs/tubs/ACCESSBIND-PIB000066400000000000000000002306661127776177100177030ustar00rootroot00000000000000ACCESSBIND-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 libsmi-0.4.8+dfsg2/pibs/tubs/ACCESSBIND-PIB-orig000066400000000000000000001467471127776177100206470ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB000066400000000000000000000224121127776177100212560ustar00rootroot00000000000000ACCOUNTING-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 libsmi-0.4.8+dfsg2/pibs/tubs/ACCOUNTING-FRAMEWORK-PIB-orig000066400000000000000000000223061127776177100222160ustar00rootroot00000000000000ACCOUNTING-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 libsmi-0.4.8+dfsg2/pibs/tubs/FEEDBACK-FRAMEWORK-PIB000066400000000000000000001006461127776177100207560ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/pibs/tubs/FEEDBACK-FRAMEWORK-PIB-orig000066400000000000000000001004221127776177100217040ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/pibs/tubs/IP-TE-PIB000066400000000000000000000727711127776177100171240ustar00rootroot00000000000000IP-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 libsmi-0.4.8+dfsg2/pibs/tubs/IP-TE-PIB-orig000066400000000000000000000727241127776177100200600ustar00rootroot00000000000000IP-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 libsmi-0.4.8+dfsg2/pibs/tubs/IPSEC-POLICY-PIB000066400000000000000000004142171127776177100201410ustar00rootroot00000000000000IPSEC-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 libsmi-0.4.8+dfsg2/pibs/tubs/IPSEC-POLICY-PIB-orig000066400000000000000000004140761127776177100211020ustar00rootroot00000000000000IPSEC-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 libsmi-0.4.8+dfsg2/pibs/tubs/LOAD-BALANCING-PIB000066400000000000000000000405561127776177100202750ustar00rootroot00000000000000LOAD-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 libsmi-0.4.8+dfsg2/pibs/tubs/LOAD-BALANCING-PIB-orig000066400000000000000000000403541127776177100212270ustar00rootroot00000000000000LOAD-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 libsmi-0.4.8+dfsg2/pibs/tubs/META-POLICY-PIB000066400000000000000000000700151127776177100200160ustar00rootroot00000000000000META-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 libsmi-0.4.8+dfsg2/pibs/tubs/META-POLICY-PIB-orig000066400000000000000000000666451127776177100207720ustar00rootroot00000000000000META-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 libsmi-0.4.8+dfsg2/pibs/tubs/MPLS-SETUP-PIB000066400000000000000000001030341127776177100177420ustar00rootroot00000000000000MPLS-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 libsmi-0.4.8+dfsg2/pibs/tubs/MPLS-SETUP-PIB-orig000066400000000000000000001027421127776177100207050ustar00rootroot00000000000000MPLS-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 libsmi-0.4.8+dfsg2/pibs/tubs/Makefile.am000066400000000000000000000006521127776177100177740ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/pibs/tubs/Makefile.in000066400000000000000000000224151127776177100200060ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/pibs/tubs/PARTITION-PIB000066400000000000000000000726141127776177100176530ustar00rootroot00000000000000PARTITION-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 libsmi-0.4.8+dfsg2/pibs/tubs/PARTITION-PIB-orig000066400000000000000000000702301127776177100206010ustar00rootroot00000000000000PARTITION-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 libsmi-0.4.8+dfsg2/pibs/tubs/POLICY-FRAMEWORK-PIB000066400000000000000000000207231127776177100206260ustar00rootroot00000000000000POLICY-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 libsmi-0.4.8+dfsg2/pibs/tubs/POLICY-FRAMEWORK-PIB-orig000066400000000000000000000221441127776177100215630ustar00rootroot00000000000000POLICY-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 libsmi-0.4.8+dfsg2/pibs/tubs/PPVPN-PIB000066400000000000000000001065131127776177100172010ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/pibs/tubs/PPVPN-PIB-orig000066400000000000000000001062711127776177100201400ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/pibs/tubs/QOS-POLICY-802-PIB000066400000000000000000000512341127776177100202430ustar00rootroot00000000000000QOS-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 libsmi-0.4.8+dfsg2/pibs/tubs/QOS-POLICY-802-PIB-orig000066400000000000000000000510711127776177100212000ustar00rootroot00000000000000QOS-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 libsmi-0.4.8+dfsg2/pibs/tubs/QOS-POLICY-IP-PIB000066400000000000000000001352701127776177100202450ustar00rootroot00000000000000QOS-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 libsmi-0.4.8+dfsg2/pibs/tubs/QOS-POLICY-IP-PIB-orig000066400000000000000000001353051127776177100212020ustar00rootroot00000000000000QOS-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 libsmi-0.4.8+dfsg2/pibs/tubs/RSVP-PCC-PIB000066400000000000000000001207201127776177100174670ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/pibs/tubs/RSVP-PCC-PIB-orig000066400000000000000000001201411127776177100204220ustar00rootroot00000000000000 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 libsmi-0.4.8+dfsg2/pibs/tubs/SLS-NEGOTIATION-PIB000066400000000000000000000626571127776177100205270ustar00rootroot00000000000000SLS-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 libsmi-0.4.8+dfsg2/pibs/tubs/SLS-NEGOTIATION-PIB-orig000066400000000000000000000615421127776177100214550ustar00rootroot00000000000000SLS-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. libsmi-0.4.8+dfsg2/pibs/tubs/UMTS-PIB000066400000000000000000000245351127776177100170710ustar00rootroot00000000000000UMTS-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 libsmi-0.4.8+dfsg2/pibs/tubs/UMTS-PIB-orig000066400000000000000000000244371127776177100200300ustar00rootroot00000000000000UMTS-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 libsmi-0.4.8+dfsg2/smi.conf-example000066400000000000000000000031301127776177100171100ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/test/000077500000000000000000000000001127776177100150025ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/Makefile.am000066400000000000000000000027561127776177100170500ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/test/Makefile.in000066400000000000000000000537371127776177100170660ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/000077500000000000000000000000001127776177100161325ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/Makefile.am000066400000000000000000000010001127776177100201550ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/test/dumps/Makefile.in000066400000000000000000000354721127776177100202120ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/cm/000077500000000000000000000000001127776177100165315ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/cm/IF-MIB000066400000000000000000001420671127776177100173710ustar00rootroot00000000000000 #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# libsmi-0.4.8+dfsg2/test/dumps/cm/MAU-MIB000066400000000000000000001541301127776177100175070ustar00rootroot00000000000000 #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# ## # # # # libsmi-0.4.8+dfsg2/test/dumps/cm/Makefile.am000066400000000000000000000006551127776177100205730ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/cm/Makefile.in000066400000000000000000000224341127776177100206030ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/cm/RMON2-MIB000066400000000000000000006574321127776177100177370ustar00rootroot00000000000000 #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# libsmi-0.4.8+dfsg2/test/dumps/cm/SNMPv2-MIB000066400000000000000000000616551127776177100201230ustar00rootroot00000000000000 #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# libsmi-0.4.8+dfsg2/test/dumps/corba/000077500000000000000000000000001127776177100172205ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/corba/IF_MIB.idl000066400000000000000000001221171127776177100207030ustar00rootroot00000000000000/* -- 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_ */ libsmi-0.4.8+dfsg2/test/dumps/corba/IF_MIB.oid000066400000000000000000000114301127776177100207010ustar00rootroot00000000000000::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 libsmi-0.4.8+dfsg2/test/dumps/corba/MAU_MIB.idl000066400000000000000000001320371127776177100210310ustar00rootroot00000000000000/* -- 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_ */ libsmi-0.4.8+dfsg2/test/dumps/corba/MAU_MIB.oid000066400000000000000000000116611127776177100210330ustar00rootroot00000000000000::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 libsmi-0.4.8+dfsg2/test/dumps/corba/Makefile.am000066400000000000000000000006551127776177100212620ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/corba/Makefile.in000066400000000000000000000224451127776177100212740ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/corba/RMON2_MIB.idl000066400000000000000000005023441127776177100212460ustar00rootroot00000000000000/* -- 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_ */ libsmi-0.4.8+dfsg2/test/dumps/corba/RMON2_MIB.oid000066400000000000000000000524051127776177100212470ustar00rootroot00000000000000::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 libsmi-0.4.8+dfsg2/test/dumps/corba/SNMPv2_MIB.idl000066400000000000000000000437011127776177100214330ustar00rootroot00000000000000/* -- 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_ */ libsmi-0.4.8+dfsg2/test/dumps/corba/SNMPv2_MIB.oid000066400000000000000000000056571127776177100214460ustar00rootroot00000000000000::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 libsmi-0.4.8+dfsg2/test/dumps/identifiers/000077500000000000000000000000001127776177100204375ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/identifiers/IF-MIB000066400000000000000000000147051127776177100212740ustar00rootroot00000000000000# 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 libsmi-0.4.8+dfsg2/test/dumps/identifiers/MAU-MIB000066400000000000000000000154741127776177100214240ustar00rootroot00000000000000# 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 libsmi-0.4.8+dfsg2/test/dumps/identifiers/Makefile.am000066400000000000000000000006551127776177100225010ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/identifiers/Makefile.in000066400000000000000000000224671127776177100225170ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/identifiers/RMON2-MIB000066400000000000000000000604641127776177100216360ustar00rootroot00000000000000# 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 libsmi-0.4.8+dfsg2/test/dumps/identifiers/SNMPv2-MIB000066400000000000000000000120741127776177100220200ustar00rootroot00000000000000# 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 libsmi-0.4.8+dfsg2/test/dumps/imports/000077500000000000000000000000001127776177100176275ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/imports/IF-MIB000066400000000000000000000012321127776177100204530ustar00rootroot00000000000000# 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] libsmi-0.4.8+dfsg2/test/dumps/imports/MAU-MIB000066400000000000000000000021551127776177100206040ustar00rootroot00000000000000# 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] libsmi-0.4.8+dfsg2/test/dumps/imports/Makefile.am000066400000000000000000000006551127776177100216710ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/imports/Makefile.in000066400000000000000000000224531127776177100217020ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/imports/RMON2-MIB000066400000000000000000000033711127776177100210200ustar00rootroot00000000000000# 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] libsmi-0.4.8+dfsg2/test/dumps/imports/SNMPv2-MIB000066400000000000000000000004021127776177100212000ustar00rootroot00000000000000# 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] libsmi-0.4.8+dfsg2/test/dumps/jax/000077500000000000000000000000001127776177100167145ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/jax/AddressMap.java000066400000000000000000000116011127776177100216010ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/AddressMapControlEntry.java000066400000000000000000000075341127776177100241760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AddressMapControlEntryImpl.java000066400000000000000000000063311127776177100250120ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AddressMapControlTable.java000066400000000000000000000072221127776177100241160ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AddressMapEntry.java000066400000000000000000000041441127776177100226270ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AddressMapEntryImpl.java000066400000000000000000000022111127776177100234420ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AddressMapImpl.java000066400000000000000000000030751127776177100224310ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AddressMapTable.java000066400000000000000000000041151127776177100225530ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlHostEntry.java000066400000000000000000000050071127776177100217750ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlHostEntryImpl.java000066400000000000000000000025421127776177100226200ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlHostTable.java000066400000000000000000000055101127776177100217220ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixDSEntry.java000066400000000000000000000053611127776177100225560ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixDSEntryImpl.java000066400000000000000000000026051127776177100233760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixDSTable.java000066400000000000000000000045161127776177100225050ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixSDEntry.java000066400000000000000000000053611127776177100225560ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixSDEntryImpl.java000066400000000000000000000026051127776177100233760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixSDTable.java000066400000000000000000000045161127776177100225050ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixTopNControlEntry.java000066400000000000000000000161101127776177100244630ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixTopNControlEntryImpl.java000066400000000000000000000137371127776177100253210ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixTopNControlTable.java000066400000000000000000000147371127776177100244260ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixTopNEntry.java000066400000000000000000000047121127776177100231270ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixTopNEntryImpl.java000066400000000000000000000031431127776177100237460ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AlMatrixTopNTable.java000066400000000000000000000076431127776177100230630ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/AuthenticationFailure.java000066400000000000000000000017221127776177100240500ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/BroadMauBasicEntry.java000066400000000000000000000030161127776177100232350ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/BroadMauBasicEntryImpl.java000066400000000000000000000023021127776177100240540ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/BroadMauBasicTable.java000066400000000000000000000056701127776177100231730ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Channel2Entry.java000066400000000000000000000015711127776177100222370ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Channel2EntryImpl.java000066400000000000000000000014451127776177100230610ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Channel2Table.java000066400000000000000000000040521127776177100221620ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ColdStart.java000066400000000000000000000016261127776177100214630ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/EtherStats2Entry.java000066400000000000000000000016271127776177100227570ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/EtherStats2EntryImpl.java000066400000000000000000000015001127776177100235670ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/EtherStats2Table.java000066400000000000000000000041131127776177100226760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Filter2Entry.java000066400000000000000000000046021127776177100221120ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Filter2EntryImpl.java000066400000000000000000000042461127776177100227400ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Filter2Table.java000066400000000000000000000052271127776177100220440ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HistoryControl2Entry.java000066400000000000000000000014511127776177100236660ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HistoryControl2EntryImpl.java000066400000000000000000000013771127776177100245170ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HistoryControl2Table.java000066400000000000000000000035031127776177100236140ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HlHostControlEntry.java000066400000000000000000000143401127776177100233450ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HlHostControlEntryImpl.java000066400000000000000000000122541127776177100241710ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HlHostControlTable.java000066400000000000000000000144221127776177100232740ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HlMatrixControlEntry.java000066400000000000000000000146021127776177100236750ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HlMatrixControlEntryImpl.java000066400000000000000000000124461127776177100245230ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HlMatrixControlTable.java000066400000000000000000000145741127776177100236330ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HostControl2Entry.java000066400000000000000000000016411127776177100231430ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HostControl2EntryImpl.java000066400000000000000000000015111127776177100237610ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/HostControl2Table.java000066400000000000000000000041261127776177100230720ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfEntry.java000066400000000000000000000073121127776177100211420ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfEntryImpl.java000066400000000000000000000054451127776177100217710ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfJackEntry.java000066400000000000000000000025551127776177100217370ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfJackEntryImpl.java000066400000000000000000000015131127776177100225520ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfJackTable.java000066400000000000000000000033461127776177100216640ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMIBObjects.java000066400000000000000000000063041127776177100217620ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMIBObjectsImpl.java000066400000000000000000000013521127776177100226020ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMauAutoNegEntry.java000066400000000000000000000151571127776177100230760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMauAutoNegEntryImpl.java000066400000000000000000000126071127776177100237150ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMauAutoNegTable.java000066400000000000000000000150501127776177100230140ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMauEntry.java000066400000000000000000000075751127776177100216200ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMauEntryImpl.java000066400000000000000000000060471127776177100224330ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMauJabberTrap.java000066400000000000000000000027231127776177100225210ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfMauTable.java000066400000000000000000000136151127776177100215360ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfRcvAddressEntry.java000066400000000000000000000052301127776177100231200ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfRcvAddressEntryImpl.java000066400000000000000000000041571127776177100237510ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfRcvAddressTable.java000066400000000000000000000051411127776177100230470ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfStackEntry.java000066400000000000000000000035341127776177100221320ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfStackEntryImpl.java000066400000000000000000000025761127776177100227610ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfStackTable.java000066400000000000000000000037711127776177100220630ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfTable.java000066400000000000000000000170101127776177100210640ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfTestEntry.java000066400000000000000000000076001127776177100220020ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfTestEntryImpl.java000066400000000000000000000066771127776177100226410ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfTestTable.java000066400000000000000000000101471127776177100217300ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfXEntry.java000066400000000000000000000120231127776177100212650ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfXEntryImpl.java000066400000000000000000000101301127776177100221040ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/IfXTable.java000066400000000000000000000167361127776177100212320ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Interfaces.java000066400000000000000000000045201127776177100216430ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/InterfacesImpl.java000066400000000000000000000011701127776177100224630ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/LinkDown.java000066400000000000000000000045771127776177100213210ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/LinkUp.java000066400000000000000000000045651127776177100207730ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Makefile.am000066400000000000000000000006551127776177100207560ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/jax/Makefile.in000066400000000000000000000224371127776177100207710ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/jax/MatrixControl2Entry.java000066400000000000000000000016651127776177100235000ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/MatrixControl2EntryImpl.java000066400000000000000000000015331127776177100243140ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/MatrixControl2Table.java000066400000000000000000000041541127776177100234220ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NetConfigEntry.java000066400000000000000000000067751127776177100224740ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NetConfigEntryImpl.java000066400000000000000000000060271127776177100233040ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NetConfigTable.java000066400000000000000000000062201127776177100224030ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlHostEntry.java000066400000000000000000000046141127776177100220150ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlHostEntryImpl.java000066400000000000000000000025651127776177100226420ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlHostTable.java000066400000000000000000000061651127776177100217460ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixDSEntry.java000066400000000000000000000047441127776177100225770ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixDSEntryImpl.java000066400000000000000000000024471127776177100234170ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixDSTable.java000066400000000000000000000045161127776177100225220ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixSDEntry.java000066400000000000000000000047441127776177100225770ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixSDEntryImpl.java000066400000000000000000000024471127776177100234170ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixSDTable.java000066400000000000000000000045161127776177100225220ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixTopNControlEntry.java000066400000000000000000000161101127776177100245000ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixTopNControlEntryImpl.java000066400000000000000000000137371127776177100253360ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixTopNControlTable.java000066400000000000000000000147371127776177100244430ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixTopNEntry.java000066400000000000000000000044221127776177100231420ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixTopNEntryImpl.java000066400000000000000000000027471127776177100237740ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/NlMatrixTopNTable.java000066400000000000000000000071351127776177100230740ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProbeConfig.java000066400000000000000000000314661127776177100217660ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProbeConfigImpl.java000066400000000000000000000117471127776177100226100ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDir.java000066400000000000000000000050051127776177100220170ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDirEntry.java000066400000000000000000000151401127776177100230420ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDirEntryImpl.java000066400000000000000000000127731127776177100236750ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDirImpl.java000066400000000000000000000012321127776177100226370ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDirTable.java000066400000000000000000000127271127776177100230000ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDistControlEntry.java000066400000000000000000000101351127776177100245670ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDistControlEntryImpl.java000066400000000000000000000066161127776177100254220ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDistControlTable.java000066400000000000000000000100101127776177100245050ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDistStatsEntry.java000066400000000000000000000030321127776177100242430ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDistStatsEntryImpl.java000066400000000000000000000020001127776177100250570ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/ProtocolDistStatsTable.java000066400000000000000000000041641127776177100242000ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RingStationControl2Entry.java000066400000000000000000000017471127776177100244760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RingStationControl2EntryImpl.java000066400000000000000000000016101127776177100253050ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RingStationControl2Table.java000066400000000000000000000042441127776177100244170ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RpJackEntry.java000066400000000000000000000031661127776177100217610ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RpJackEntryImpl.java000066400000000000000000000016311127776177100225760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RpJackTable.java000066400000000000000000000033461127776177100217070ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RpMauEntry.java000066400000000000000000000054641127776177100216360ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RpMauEntryImpl.java000066400000000000000000000042461127776177100224550ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RpMauJabberTrap.java000066400000000000000000000027231127776177100225440ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/RpMauTable.java000066400000000000000000000107441127776177100215610ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SerialConfigEntry.java000066400000000000000000000211271127776177100231510ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SerialConfigEntryImpl.java000066400000000000000000000170541127776177100237770ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SerialConfigTable.java000066400000000000000000000150451127776177100231010ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SerialConnectionEntry.java000066400000000000000000000214631127776177100240460ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SerialConnectionEntryImpl.java000066400000000000000000000172511127776177100246700ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SerialConnectionTable.java000066400000000000000000000144361127776177100237760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/Snmp.java000066400000000000000000000600431127776177100204770ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/SnmpImpl.java000066400000000000000000000073331127776177100213240ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SnmpSet.java000066400000000000000000000062301127776177100211510ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/SnmpSetImpl.java000066400000000000000000000024301127776177100217710ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SnmpTrap.java000066400000000000000000000063061127776177100213300ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/SnmpTrapImpl.java000066400000000000000000000013361127776177100221500ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SourceRoutingStats2Entry.java000066400000000000000000000017471127776177100245230ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SourceRoutingStats2EntryImpl.java000066400000000000000000000016101127776177100253320ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SourceRoutingStats2Table.java000066400000000000000000000042441127776177100244440ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SysOREntry.java000066400000000000000000000022121127776177100216150ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SysOREntryImpl.java000066400000000000000000000015311127776177100224420ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/SysORTable.java000066400000000000000000000044121127776177100215470ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/System.java000066400000000000000000000230421127776177100210440ustar00rootroot00000000000000/* * 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); } } libsmi-0.4.8+dfsg2/test/dumps/jax/SystemImpl.java000066400000000000000000000063461127776177100216760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TokenRingMLStats2Entry.java000066400000000000000000000017231127776177100240360ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TokenRingMLStats2EntryImpl.java000066400000000000000000000015661127776177100246650ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TokenRingMLStats2Table.java000066400000000000000000000042151127776177100237630ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TokenRingPStats2Entry.java000066400000000000000000000017111127776177100237220ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TokenRingPStats2EntryImpl.java000066400000000000000000000015551127776177100245520ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TokenRingPStats2Table.java000066400000000000000000000042021127776177100236460ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TrapDestEntry.java000066400000000000000000000121671127776177100223360ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TrapDestEntryImpl.java000066400000000000000000000107231127776177100231540ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/TrapDestTable.java000066400000000000000000000103101127776177100222500ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryControlEntry.java000066400000000000000000000130431127776177100242760ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryControlEntryImpl.java000066400000000000000000000113601127776177100251200ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryControlTable.java000066400000000000000000000115051127776177100242250ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryEntry.java000066400000000000000000000040371127776177100227400ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryEntryImpl.java000066400000000000000000000023341127776177100235600ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryObjectEntry.java000066400000000000000000000057471127776177100241000ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryObjectEntryImpl.java000066400000000000000000000044711127776177100247130ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryObjectTable.java000066400000000000000000000053471127776177100240220ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/UsrHistoryTable.java000066400000000000000000000052121127776177100226620ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/jax/WarmStart.java000066400000000000000000000016261127776177100215100ustar00rootroot00000000000000/* * 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; } } libsmi-0.4.8+dfsg2/test/dumps/metrics/000077500000000000000000000000001127776177100176005ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/metrics/IF-MIB000066400000000000000000000157301127776177100204340ustar00rootroot00000000000000# 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% libsmi-0.4.8+dfsg2/test/dumps/metrics/MAU-MIB000066400000000000000000000154221127776177100205560ustar00rootroot00000000000000# 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% libsmi-0.4.8+dfsg2/test/dumps/metrics/Makefile.am000066400000000000000000000006551127776177100216420ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/metrics/Makefile.in000066400000000000000000000224531127776177100216530ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/metrics/RMON2-MIB000066400000000000000000000212411127776177100207650ustar00rootroot00000000000000# 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% libsmi-0.4.8+dfsg2/test/dumps/metrics/SNMPv2-MIB000066400000000000000000000140051127776177100211550ustar00rootroot00000000000000# 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% libsmi-0.4.8+dfsg2/test/dumps/mosy/000077500000000000000000000000001127776177100171215ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/mosy/IF-MIB000066400000000000000000000214511127776177100177520ustar00rootroot00000000000000-- 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 libsmi-0.4.8+dfsg2/test/dumps/mosy/MAU-MIB000066400000000000000000000263011127776177100200750ustar00rootroot00000000000000-- 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 libsmi-0.4.8+dfsg2/test/dumps/mosy/Makefile.am000066400000000000000000000006551127776177100211630ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/mosy/Makefile.in000066400000000000000000000224421127776177100211720ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/mosy/RMON2-MIB000066400000000000000000001115301127776177100203070ustar00rootroot00000000000000-- 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 libsmi-0.4.8+dfsg2/test/dumps/mosy/SNMPv2-MIB000066400000000000000000000136251127776177100205050ustar00rootroot00000000000000-- 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 libsmi-0.4.8+dfsg2/test/dumps/netsnmp/000077500000000000000000000000001127776177100176165ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/netsnmp/Makefile.am000066400000000000000000000006551127776177100216600ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/netsnmp/Makefile.in000066400000000000000000000224531127776177100216710ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/netsnmp/if-mib-agt-stub.c000066400000000000000000000532431127776177100226600ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/if-mib-agt.c000066400000000000000000000012471127776177100217020ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/if-mib-mgr-stub.c000066400000000000000000000714201127776177100226670ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/if-mib.h000066400000000000000000000210031127776177100211260ustar00rootroot00000000000000/* * 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_ */ libsmi-0.4.8+dfsg2/test/dumps/netsnmp/mau-mib-agt-stub.c000066400000000000000000000462611127776177100230460ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/mau-mib-agt.c000066400000000000000000000012611127776177100220620ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/mau-mib-mgr-stub.c000066400000000000000000000665521127776177100230650ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/mau-mib.h000066400000000000000000000177251127776177100213320ustar00rootroot00000000000000/* * 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_ */ libsmi-0.4.8+dfsg2/test/dumps/netsnmp/rmon2-mib-agt-stub.c000066400000000000000000003273551127776177100233270ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/rmon2-mib-agt.c000066400000000000000000000013051127776177100223340ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/rmon2-mib-mgr-stub.c000066400000000000000000004125661127776177100233400ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/rmon2-mib.h000066400000000000000000001330371127776177100216000ustar00rootroot00000000000000/* * 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_ */ libsmi-0.4.8+dfsg2/test/dumps/netsnmp/snmpv2-mib-agt-stub.c000066400000000000000000000362541127776177100235120ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/snmpv2-mib-agt.c000066400000000000000000000013171127776177100225270ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/snmpv2-mib-mgr-stub.c000066400000000000000000000540211127776177100235140ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/test/dumps/netsnmp/snmpv2-mib.h000066400000000000000000000131541127776177100217650ustar00rootroot00000000000000/* * 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_ */ libsmi-0.4.8+dfsg2/test/dumps/orig-smiv2/000077500000000000000000000000001127776177100201305ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/orig-smiv2/IF-MIB000066400000000000000000000006511127776177100207600ustar00rootroot000000000000000a1 > 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 libsmi-0.4.8+dfsg2/test/dumps/orig-smiv2/MAU-MIB000066400000000000000000000005511127776177100211030ustar00rootroot000000000000000a1 > 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, libsmi-0.4.8+dfsg2/test/dumps/orig-smiv2/Makefile.am000066400000000000000000000006551127776177100221720ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/orig-smiv2/Makefile.in000066400000000000000000000224641127776177100222050ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/orig-smiv2/RMON2-MIB000066400000000000000000000003351127776177100213160ustar00rootroot000000000000000a1 > 3462c3463 < channelEntry --- > channelEntry, 4756c4757 < sourceRoutingStatsEntry --- > sourceRoutingStatsEntry, 4761c4762 < statistics, --- > statistics 4800c4801 < tokenRingPStatsEntry, --- > tokenRingPStatsEntry libsmi-0.4.8+dfsg2/test/dumps/orig-smiv2/SNMPv2-MIB000066400000000000000000000005421127776177100215060ustar00rootroot000000000000000a1 > 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 libsmi-0.4.8+dfsg2/test/dumps/python/000077500000000000000000000000001127776177100174535ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/python/IF-MIB000066400000000000000000003150431127776177100203070ustar00rootroot00000000000000# 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 } libsmi-0.4.8+dfsg2/test/dumps/python/MAU-MIB000066400000000000000000002614371127776177100204420ustar00rootroot00000000000000# 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 } libsmi-0.4.8+dfsg2/test/dumps/python/Makefile.am000066400000000000000000000006551127776177100215150ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/python/Makefile.in000066400000000000000000000224501127776177100215230ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/python/RMON2-MIB000066400000000000000000011362361127776177100206540ustar00rootroot00000000000000# 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 } libsmi-0.4.8+dfsg2/test/dumps/python/SNMPv2-MIB000066400000000000000000001425031127776177100210350ustar00rootroot00000000000000# 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 } libsmi-0.4.8+dfsg2/test/dumps/smilint-smiv2/000077500000000000000000000000001127776177100206475ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/smilint-smiv2/IF-MIB000066400000000000000000000007201127776177100214740ustar00rootroot00000000000000../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 libsmi-0.4.8+dfsg2/test/dumps/smilint-smiv2/MAU-MIB000066400000000000000000000021661127776177100216260ustar00rootroot00000000000000../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 libsmi-0.4.8+dfsg2/test/dumps/smilint-smiv2/Makefile.am000066400000000000000000000006551127776177100227110ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/smilint-smiv2/Makefile.in000066400000000000000000000224751127776177100227260ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/smilint-smiv2/RMON2-MIB000066400000000000000000000041551127776177100220410ustar00rootroot00000000000000../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 libsmi-0.4.8+dfsg2/test/dumps/smilint-smiv2/SNMPv2-MIB000066400000000000000000000001571127776177100222270ustar00rootroot00000000000000../dumps/smiv2/SNMPv2-MIB:750: warning: current group `snmpNotificationGroup' is not referenced in this module libsmi-0.4.8+dfsg2/test/dumps/sming/000077500000000000000000000000001127776177100172475ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/sming/IF-MIB000066400000000000000000002017311127776177100201010ustar00rootroot00000000000000// // 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. libsmi-0.4.8+dfsg2/test/dumps/sming/MAU-MIB000066400000000000000000001670241127776177100202330ustar00rootroot00000000000000// // 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. libsmi-0.4.8+dfsg2/test/dumps/sming/Makefile.am000066400000000000000000000006551127776177100213110ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/sming/Makefile.in000066400000000000000000000224451127776177100213230ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/sming/RMON2-MIB000066400000000000000000006531161127776177100204500ustar00rootroot00000000000000// // 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. libsmi-0.4.8+dfsg2/test/dumps/sming/SNMPv2-MIB000066400000000000000000000653451127776177100206410ustar00rootroot00000000000000// // 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. libsmi-0.4.8+dfsg2/test/dumps/smiv1/000077500000000000000000000000001127776177100171715ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/smiv1/IF-MIB000066400000000000000000002113721127776177100200250ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv1/MAU-MIB000066400000000000000000001756111127776177100201560ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv1/Makefile.am000066400000000000000000000006551127776177100212330ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/smiv1/Makefile.in000066400000000000000000000224451127776177100212450ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/smiv1/RMON2-MIB000066400000000000000000006752671127776177100204050ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv1/SNMPv2-MIB000066400000000000000000000671751127776177100205660ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv2-smiv2/000077500000000000000000000000001127776177100202305ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/smiv2-smiv2/IF-MIB000066400000000000000000002032201127776177100210550ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv2-smiv2/MAU-MIB000066400000000000000000001674461127776177100212240ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv2-smiv2/Makefile.am000066400000000000000000000006551127776177100222720ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/smiv2-smiv2/Makefile.in000066400000000000000000000224671127776177100223100ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/smiv2-smiv2/RMON2-MIB000066400000000000000000006651011127776177100214260ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv2-smiv2/SNMPv2-MIB000066400000000000000000000646241127776177100216210ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv2/000077500000000000000000000000001127776177100171725ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/smiv2/IF-MIB000066400000000000000000002032201127776177100200170ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv2/MAU-MIB000066400000000000000000001674461127776177100201660ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv2/Makefile.am000066400000000000000000000006551127776177100212340ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/smiv2/Makefile.in000066400000000000000000000224451127776177100212460ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/smiv2/RMON2-MIB000066400000000000000000006651011127776177100203700ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/smiv2/SNMPv2-MIB000066400000000000000000000646241127776177100205630ustar00rootroot00000000000000-- -- 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. libsmi-0.4.8+dfsg2/test/dumps/tree/000077500000000000000000000000001127776177100170715ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/tree/IF-MIB000066400000000000000000000132761127776177100177300ustar00rootroot00000000000000# 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] libsmi-0.4.8+dfsg2/test/dumps/tree/MAU-MIB000066400000000000000000000116111127776177100200430ustar00rootroot00000000000000# 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) libsmi-0.4.8+dfsg2/test/dumps/tree/Makefile.am000066400000000000000000000006551127776177100211330ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/tree/Makefile.in000066400000000000000000000224421127776177100211420ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/tree/RMON2-MIB000066400000000000000000000423461127776177100202670ustar00rootroot00000000000000# 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) libsmi-0.4.8+dfsg2/test/dumps/tree/SNMPv2-MIB000066400000000000000000000075351127776177100204600ustar00rootroot00000000000000# 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) libsmi-0.4.8+dfsg2/test/dumps/types/000077500000000000000000000000001127776177100172765ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/types/IF-MIB000066400000000000000000000025031127776177100201240ustar00rootroot00000000000000# 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)} libsmi-0.4.8+dfsg2/test/dumps/types/MAU-MIB000066400000000000000000000033211127776177100202470ustar00rootroot00000000000000# 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] libsmi-0.4.8+dfsg2/test/dumps/types/Makefile.am000066400000000000000000000006551127776177100213400ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/types/Makefile.in000066400000000000000000000224451127776177100213520ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/types/RMON2-MIB000066400000000000000000000157321127776177100204730ustar00rootroot00000000000000# 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)} libsmi-0.4.8+dfsg2/test/dumps/types/SNMPv2-MIB000066400000000000000000000010021127776177100206440ustar00rootroot00000000000000# 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)} libsmi-0.4.8+dfsg2/test/dumps/xml/000077500000000000000000000000001127776177100167325ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/xml/IF-MIB000066400000000000000000002506661127776177100175770ustar00rootroot00000000000000 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. libsmi-0.4.8+dfsg2/test/dumps/xml/MAU-MIB000066400000000000000000002306711127776177100177150ustar00rootroot00000000000000 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. libsmi-0.4.8+dfsg2/test/dumps/xml/Makefile.am000066400000000000000000000006551127776177100207740ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/xml/Makefile.in000066400000000000000000000224371127776177100210070ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/xml/RMON2-MIB000066400000000000000000010114421127776177100201220ustar00rootroot00000000000000 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.
libsmi-0.4.8+dfsg2/test/dumps/xml/SNMPv2-MIB000066400000000000000000001071561127776177100203210ustar00rootroot00000000000000 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.
libsmi-0.4.8+dfsg2/test/dumps/yang/000077500000000000000000000000001127776177100170705ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/dumps/yang/IF-MIB000066400000000000000000001263151127776177100177260ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/test/dumps/yang/MAU-MIB000066400000000000000000001304211127776177100200430ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/test/dumps/yang/Makefile.am000066400000000000000000000006551127776177100211320ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/dumps/yang/Makefile.in000066400000000000000000000224421127776177100211410ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/dumps/yang/RMON2-MIB000066400000000000000000005352201127776177100202640ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/test/dumps/yang/SNMPv2-MIB000066400000000000000000000464641127776177100204630ustar00rootroot00000000000000/* * 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 */ libsmi-0.4.8+dfsg2/test/mibs/000077500000000000000000000000001127776177100157345ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-001-MIB000066400000000000000000000024041127776177100203160ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-002-MIB000066400000000000000000000026211127776177100203200ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-003-MIB000066400000000000000000000034051127776177100203220ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-004-MIB000066400000000000000000000026451127776177100203300ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-005-MIB000066400000000000000000000025321127776177100203240ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-006-MIB000066400000000000000000000024321127776177100203240ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-007-MIB000066400000000000000000000026071127776177100203310ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-008-MIB000066400000000000000000000141471127776177100203340ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-009-MIB000066400000000000000000000116051127776177100203310ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-010-MIB000066400000000000000000000101451127776177100203170ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-011-MIB000066400000000000000000000065111127776177100203220ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-012-MIB000066400000000000000000000040341127776177100203210ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-013-MIB000066400000000000000000000064211127776177100203240ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-014-MIB000066400000000000000000000172451127776177100203330ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-015-MIB000066400000000000000000000050311127776177100203220ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-016-MIB000066400000000000000000000127461127776177100203360ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-017-MIB000066400000000000000000000152531127776177100203330ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-018-MIB000066400000000000000000000037511127776177100203340ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/LIBSMI-TEST-MIB000066400000000000000000000023331127776177100200210ustar00rootroot00000000000000LIBSMI-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 libsmi-0.4.8+dfsg2/test/mibs/Makefile.am000066400000000000000000000014511127776177100177710ustar00rootroot00000000000000# # 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 libsmi-0.4.8+dfsg2/test/mibs/Makefile.in000066400000000000000000000232301127776177100200010ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/parser.test000077500000000000000000000013161127776177100172030ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/parser.test.in000066400000000000000000000013241127776177100176040ustar00rootroot00000000000000#!@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} libsmi-0.4.8+dfsg2/test/smidiff.test000077500000000000000000000022671127776177100173360ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidiff.test.in000066400000000000000000000020651127776177100177340ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidiff/000077500000000000000000000000001127776177100164235ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/smidiff/DISMAN-SCRIPT-MIB.diff000066400000000000000000000162031127776177100216410ustar00rootroot00000000000000../../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 libsmi-0.4.8+dfsg2/test/smidiff/DISMAN-SCRIPT-MIB.old000066400000000000000000001430201127776177100215050ustar00rootroot00000000000000DISMAN-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 libsmi-0.4.8+dfsg2/test/smidiff/IF-MIB.diff000066400000000000000000000230021127776177100201550ustar00rootroot00000000000000../../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 libsmi-0.4.8+dfsg2/test/smidiff/IF-MIB.old000066400000000000000000001462411127776177100200360ustar00rootroot00000000000000IF-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 libsmi-0.4.8+dfsg2/test/smidiff/INET-ADDRESS-MIB.diff000066400000000000000000000046001127776177100215040ustar00rootroot00000000000000../../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 libsmi-0.4.8+dfsg2/test/smidiff/INET-ADDRESS-MIB.old000066400000000000000000000141761127776177100213630ustar00rootroot00000000000000INET-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 libsmi-0.4.8+dfsg2/test/smidiff/Makefile.am000066400000000000000000000006521127776177100204620ustar00rootroot00000000000000# # 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') libsmi-0.4.8+dfsg2/test/smidiff/Makefile.in000066400000000000000000000224261127776177100204760ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/test/smidiff/Printer-MIB.diff000066400000000000000000003715761127776177100213300ustar00rootroot00000000000000./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 libsmi-0.4.8+dfsg2/test/smidiff/Printer-MIB.new000066400000000000000000006127111127776177100211760ustar00rootroot00000000000000Printer-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-001-MIB.diff000066400000000000000000000000001127776177100220040ustar00rootroot00000000000000libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-001-MIB.new000066400000000000000000000017141127776177100217020ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-001-MIB.old000066400000000000000000000017141127776177100216670ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-002-MIB.diff000066400000000000000000000030601127776177100220160ustar00rootroot00000000000000./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' libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-002-MIB.new000066400000000000000000000065371127776177100217130ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-002-MIB.old000066400000000000000000000064041127776177100216710ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-003-MIB.diff000066400000000000000000000024041127776177100220200ustar00rootroot00000000000000./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' libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-003-MIB.new000066400000000000000000000103071127776177100217020ustar00rootroot00000000000000SMIDIFF-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 } ENDlibsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-003-MIB.old000066400000000000000000000101711127776177100216660ustar00rootroot00000000000000SMIDIFF-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 } ENDlibsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-004-MIB.diff000066400000000000000000000011361127776177100220220ustar00rootroot00000000000000./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' libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-004-MIB.new000066400000000000000000000033101127776177100216770ustar00rootroot00000000000000SMIDIFF-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 } ENDlibsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-004-MIB.old000066400000000000000000000030551127776177100216720ustar00rootroot00000000000000SMIDIFF-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 } ENDlibsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-005-MIB.diff000066400000000000000000000014031127776177100220200ustar00rootroot00000000000000SMIDIFF-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' libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-005-MIB.new000066400000000000000000000121551127776177100217070ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-005-MIB.old000066400000000000000000000121061127776177100216700ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-006-MIB.diff000066400000000000000000000006131127776177100220230ustar00rootroot00000000000000./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' libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-006-MIB.new000066400000000000000000000024241127776177100217060ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-006-MIB.old000066400000000000000000000025001127776177100216660ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-007-MIB.diff000066400000000000000000000014131127776177100220230ustar00rootroot00000000000000./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' libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-007-MIB.new000066400000000000000000000032131127776177100217040ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-007-MIB.old000066400000000000000000000027621127776177100217010ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidiff/SMIDIFF-TEST-MIB000066400000000000000000000021021127776177100206040ustar00rootroot00000000000000SMIDIFF-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 libsmi-0.4.8+dfsg2/test/smidump-cm.test000077500000000000000000000061751127776177100177720ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-cm.test.in000066400000000000000000000053671127776177100203760ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-corba.test000077500000000000000000000061751127776177100204610ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-corba.test.in000066400000000000000000000053671127776177100210650ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-identifiers.test000077500000000000000000000061751127776177100217000ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-identifiers.test.in000066400000000000000000000053671127776177100223040ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-imports.test000077500000000000000000000061751127776177100210700ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-imports.test.in000066400000000000000000000053671127776177100214740ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-jax.test000077500000000000000000000061751127776177100201550ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-jax.test.in000066400000000000000000000053671127776177100205610ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-metrics.test000077500000000000000000000061751127776177100210410ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-metrics.test.in000066400000000000000000000053671127776177100214450ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-mosy.test000077500000000000000000000061751127776177100203620ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-mosy.test.in000066400000000000000000000053671127776177100207660ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-netsnmp.test000077500000000000000000000061751127776177100210570ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-netsnmp.test.in000066400000000000000000000053671127776177100214630ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-orig-smiv2.test000077500000000000000000000061751127776177100213710ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-orig-smiv2.test.in000066400000000000000000000053671127776177100217750ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-python.test000077500000000000000000000061751127776177100207140ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-python.test.in000066400000000000000000000053671127776177100213200ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-sming.test000077500000000000000000000061751127776177100205100ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-sming.test.in000066400000000000000000000053671127776177100211140ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-smiv1.test000077500000000000000000000061751127776177100204320ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-smiv1.test.in000066400000000000000000000053671127776177100210360ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-smiv2-smiv2.test000077500000000000000000000061751127776177100214710ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-smiv2-smiv2.test.in000066400000000000000000000053671127776177100220750ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-smiv2.test000077500000000000000000000061751127776177100204330ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-smiv2.test.in000066400000000000000000000053671127776177100210370ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-tree.test000077500000000000000000000061751127776177100203320ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-tree.test.in000066400000000000000000000053671127776177100207360ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-types.test000077500000000000000000000061751127776177100205370ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-types.test.in000066400000000000000000000053671127776177100211430ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-xml.test000077500000000000000000000061751127776177100201730ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-xml.test.in000066400000000000000000000053671127776177100205770ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-yang.test000077500000000000000000000061751127776177100203310ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smidump-yang.test.in000066400000000000000000000053671127776177100207350ustar00rootroot00000000000000#!/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} libsmi-0.4.8+dfsg2/test/smilint-smiv2.test000077500000000000000000000026341127776177100204300ustar00rootroot00000000000000#!/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 libsmi-0.4.8+dfsg2/tools/Makefile.in000066400000000000000000000600631127776177100172350ustar00rootroot00000000000000# 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: libsmi-0.4.8+dfsg2/tools/dstring.c000066400000000000000000000106071127776177100170050ustar00rootroot00000000000000/* * 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; } libsmi-0.4.8+dfsg2/tools/dstring.h000066400000000000000000000034061127776177100170110ustar00rootroot00000000000000/* * 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 libsmi-0.4.8+dfsg2/tools/dump-boilerplate.c000066400000000000000000000163211127776177100205770ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-cm.c000066400000000000000000001020561127776177100166750ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-compliance.c000066400000000000000000000150331127776177100204060ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-corba.c000066400000000000000000001234601127776177100173660ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-fig.c000066400000000000000000000104371127776177100170440ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-identifiers.c000066400000000000000000000131531127776177100206020ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-imports.c000066400000000000000000000100031127776177100177610ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-jax.c000066400000000000000000001374551127776177100170730ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-metrics.c000066400000000000000000001234461127776177100177520ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-mosy.c000066400000000000000000000326061127776177100172700ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-netsnmp.c000066400000000000000000000743141127776177100177670ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-perl.c000066400000000000000000000775211127776177100172500ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-python.c000066400000000000000000000706111127776177100176200ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-scli.c000066400000000000000000002361451127776177100172370ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-sizes.c000066400000000000000000000716131127776177100174370ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-smi.c000066400000000000000000001624071127776177100170740ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-sming.c000066400000000000000000001361011127776177100174110ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-sppi.c000066400000000000000000001413611127776177100172530ustar00rootroot00000000000000/* * 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); } libsmi-0.4.8+dfsg2/tools/dump-svg-script.h000066400000000000000000000504171127776177100204070ustar00rootroot00000000000000const 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" ; libsmi-0.4.8+dfsg2/tools/dump-svg-script.js000066400000000000000000000430331127776177100205700ustar00rootroot00000000000000//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"); } } } } libsmi-0.4.8+dfsg2/tools/dump-svg.c000066400000000000000000002765301127776177100171060ustar00rootroot00000000000000/* * 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); } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/dump-tree.c����������������������������������������������������������������0000664�0000000�0000000�00000030157�11277761771�0017237�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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); } �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/dump-types.c���������������������������������������������������������������0000664�0000000�0000000�00000037440�11277761771�0017446�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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); } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/dump-xml.c�����������������������������������������������������������������0000664�0000000�0000000�00000063163�11277761771�0017103�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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); } �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/dump-xsd.c�����������������������������������������������������������������0000664�0000000�0000000�00000155050�11277761771�0017076�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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); } ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/dump-yang.c����������������������������������������������������������������0000664�0000000�0000000�00000103653�11277761771�0017240�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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); } �������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/fortopat.c�����������������������������������������������������������������0000664�0000000�0000000�00000050567�11277761771�0017202�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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; } �����������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/fortopat.h�����������������������������������������������������������������0000664�0000000�0000000�00000002231�11277761771�0017170�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/fprint.c�������������������������������������������������������������������0000664�0000000�0000000�00000004175�11277761771�0016640�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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++; } ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/fprint.h�������������������������������������������������������������������0000664�0000000�0000000�00000001675�11277761771�0016647�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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 �������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/mib2svg.cgi.in�������������������������������������������������������������0000664�0000000�0000000�00000006632�11277761771�0017634�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!/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; } ������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/rea.c����������������������������������������������������������������������0000664�0000000�0000000�00000124736�11277761771�0016113�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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); } } ����������������������������������libsmi-0.4.8+dfsg2/tools/rea.h����������������������������������������������������������������������0000664�0000000�0000000�00000012576�11277761771�0016116�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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 ����������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/shhopt.c�������������������������������������������������������������������0000664�0000000�0000000�00000030036�11277761771�0016636�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* $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; } } } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/shhopt.h�������������������������������������������������������������������0000664�0000000�0000000�00000002515�11277761771�0016644�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* $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 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smicache.1�����������������������������������������������������������������0000664�0000000�0000000�00000003002�11277761771�0017014�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smicache.1.in��������������������������������������������������������������0000664�0000000�0000000�00000003002�11277761771�0017421�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smicache.in����������������������������������������������������������������0000664�0000000�0000000�00000002650�11277761771�0017272�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@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 ����������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smidiff.1������������������������������������������������������������������0000664�0000000�0000000�00000004751�11277761771�0016675�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 �����������������������libsmi-0.4.8+dfsg2/tools/smidiff.1.in���������������������������������������������������������������0000664�0000000�0000000�00000004751�11277761771�0017302�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 �����������������������libsmi-0.4.8+dfsg2/tools/smidiff.c������������������������������������������������������������������0000664�0000000�0000000�00000264576�11277761771�0016774�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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; } ����������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smidump.1������������������������������������������������������������������0000664�0000000�0000000�00000013126�11277761771�0016726�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smidump.1.in���������������������������������������������������������������0000664�0000000�0000000�00000013126�11277761771�0017333�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smidump.c������������������������������������������������������������������0000664�0000000�0000000�00000025070�11277761771�0017011�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smidump.h������������������������������������������������������������������0000664�0000000�0000000�00000006324�11277761771�0017017�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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 */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smilint.1������������������������������������������������������������������0000664�0000000�0000000�00000012643�11277761771�0016732�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ���������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smilint.1.in���������������������������������������������������������������0000664�0000000�0000000�00000012643�11277761771�0017337�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ���������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smilint.c������������������������������������������������������������������0000664�0000000�0000000�00000017200�11277761771�0017006�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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; } ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smiquery.1�����������������������������������������������������������������0000664�0000000�0000000�00000003657�11277761771�0017136�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ���������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smiquery.1.in��������������������������������������������������������������0000664�0000000�0000000�00000003642�11277761771�0017535�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ����������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smiquery.c�����������������������������������������������������������������0000664�0000000�0000000�00000037747�11277761771�0017227�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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; } �������������������������libsmi-0.4.8+dfsg2/tools/smistrip.1�����������������������������������������������������������������0000664�0000000�0000000�00000004047�11277761771�0017124�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smistrip.1.in��������������������������������������������������������������0000664�0000000�0000000�00000004047�11277761771�0017531�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smistrip.in����������������������������������������������������������������0000664�0000000�0000000�00000010050�11277761771�0017361�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������#!@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 ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smixlate.1�����������������������������������������������������������������0000664�0000000�0000000�00000004461�11277761771�0017100�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smixlate.1.in��������������������������������������������������������������0000664�0000000�0000000�00000004461�11277761771�0017505�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������.\" .\" $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 ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/tools/smixlate.c�����������������������������������������������������������������0000664�0000000�0000000�00000020300�11277761771�0017150�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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; } ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/win/�����������������������������������������������������������������������������0000775�0000000�0000000�00000000000�11277761771�0014620�5����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/win/GNUmakefile������������������������������������������������������������������0000664�0000000�0000000�00000006271�11277761771�0016700�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # 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$@ $< ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/win/Makefile.mingw���������������������������������������������������������������0000664�0000000�0000000�00000010165�11277761771�0017403�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # 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 .) ## �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/win/README.mingw�����������������������������������������������������������������0000664�0000000�0000000�00000004234�11277761771�0016623�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ 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" ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/win/README.win�������������������������������������������������������������������0000664�0000000�0000000�00000005714�11277761771�0016303�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������ 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 :) ����������������������������������������������������libsmi-0.4.8+dfsg2/win/config.h���������������������������������������������������������������������0000664�0000000�0000000�00000005064�11277761771�0016243�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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" ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/win/config.h.in������������������������������������������������������������������0000664�0000000�0000000�00000005070�11277761771�0016645�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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@" ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/win/makefile���������������������������������������������������������������������0000664�0000000�0000000�00000014712�11277761771�0016325�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������# # 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 ������������������������������������������������������libsmi-0.4.8+dfsg2/win/win.c������������������������������������������������������������������������0000664�0000000�0000000�00000001500�11277761771�0015555�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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. */ ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������libsmi-0.4.8+dfsg2/win/win.h������������������������������������������������������������������������0000664�0000000�0000000�00000003575�11277761771�0015600�0����������������������������������������������������������������������������������������������������ustar�00root����������������������������root����������������������������0000000�0000000������������������������������������������������������������������������������������������������������������������������������������������������������������������������/* * 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 */ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������