INTERNET DRAFTExpires August, 1994 ISO/CCITT and Internet Management Coexistence (IIMC): Translation of ISO/CCITT GDMO MIBs to Internet MIBs (IIMCOMIBTRANS) February, 1994 Owen Newnan (Editor) U S WEST Advanced Technologies 4001 Discovery Drive, Suite 190 Boulder, Colorado 80303 onewnan@advtech.uswest.com Status of this Memo This document provides information to the network and systems management community. This document is intended as a contribution to ongoing work in the area of multi-protocol management coexistence and interworking. This document is part of a package; see also [IIMCSEC] [IIMCMIB-II] [IIMCPROXY] and [IIMCIMIBTRANS]. Distribution of this document is unlimited. Comments should be sent to the Network Management Forum IIMC working group (iimc@thumper.bellcore.com). This document is an Internet Draft. Internet Drafts are working documents of the Internet Engineering Task Force (IETF), its Areas, and its Working Groups. Note that other groups may also distribute working documents as Internet Drafts. Internet Drafts are draft documents valid for a maximum of six months. Internet Drafts may be updated, replaced, or obsoleted by other documents at any time. It is not appropriate to use Internet Drafts as reference material or to cite them other than as a "working draft" or "work in progress." Please check the 1id-abstracts.txt listing contained in the internet-drafts Shadow Directories on ds.internic.net, nic.nordu.net, ftp.nisc.sri.com, munnari.oz.au to learn the current status of any Internet Draft. Newnan Expires August, 1994 Page i DRAFT February, 1994 Abstract This document provides heuristic procedures that translate managed object specifications from ISO/CCITT Guidelines for Definition of Managed Object (GDMO) templates to Internet MIB macros. Currently, some market segments demand SNMP for customer network management, while others require the ISO/CCITT Common Management Information Protocol (CMIP). The approach defined in this document accommodates both, protecting investment already made in management information specifications and minimizing cost to implement a second protocol where the market requires. This translation is designed to: lose as little functionality as possible in translation; minimize need for human involvement during translation; minimize the cost of dual protocol and proxy- based implementations; and support generic network models which span many computer platforms and network elements. This document is intended to encourage standardization of such an approach and promote consistent usage of MIB definitions, independent of protocol. Table of Contents 1. INTRODUCTION ..........................................1 1.1 PROBLEM STATEMENT.................................1 1.2 OVERVIEW OF IIMC..................................2 1.3 MIB TRANSLATION PROCEDURES........................3 1.4 NATIVE MANAGEMENT MODEL...........................3 1.5 PROXY MANAGEMENT MODEL............................5 1.6 SCOPE OF THIS DOCUMENT............................6 1.7 TERMS AND CONVENTIONS.............................7 2. SNMPV1 TRANSLATION PROCEDURES .........................12 2.1 RELATIONSHIP TO RFC 1212..........................12 2.2 MAPPING OF MANAGED OBJECT CLASSES AND ATTRIBUTES .........................................12 2.2.1 Framework ...................................12 2.2.2 Registration of Modules and Tables ..........13 2.2.3 Structure of Class Tables ...................14 2.2.4 Structure of Side Tables ....................15 2.2.5 Enumeration of Attributes ...................16 2.2.6 Discussion ..................................17 2.2.6.1 Registration........................17 2.2.6.2 Rationale for Tables................21 Newnan Expires August, 1994 Page ii DRAFT February, 1994 2.2.6.3 Rationale for the ClassInstancePointer ................21 2.2.6.4 Relationship Management.............22 2.2.6.5 Attributes of top...................23 2.2.6.6 ATTRIBUTE GROUPs....................23 2.3 MAPPING TO THE SYNTAX CLAUSE......................24 2.3.1 Procedure for Simple Input Syntax ...........24 2.3.1.1 Mapping.............................24 2.3.1.2 Discussion..........................27 2.3.2 General Procedure for Complex Input Syntax.......................................27 2.3.2.1 Mapping.............................27 2.3.2.2 Discussion..........................28 2.3.3 Procedures for ANY DEFINED BY Syntax ........29 2.4 GENERATION OF INTERNET MIB LABELS.................32 2.4.1 Notation ....................................32 2.4.2 Abbreviation Procedure ......................33 2.4.3 Mapping Procedure ...........................33 2.4.4 Discussion ..................................36 2.5 MAPPING TO THE ACCESS CLAUSE......................37 2.6 MAPPING TO THE STATUS CLAUSE......................37 2.7 MAPPING TO THE DESCRIPTION CLAUSE.................37 2.8 MAPPING TO THE REFERENCE CLAUSE...................38 2.9 MAPPING TO THE INDEX CLAUSE.......................41 2.9.1 Procedure ...................................41 2.9.2 Discussion ..................................41 2.10 MAPPING TO THE DEFVAL CLAUSE.....................42 2.11 TRANSLATION OF ACTIONS...........................43 2.11.1 Procedure ..................................43 2.11.2 Discussion .................................44 2.12 TRANSLATION OF NOTIFICATIONS.....................45 2.12.1 Procedure ..................................45 2.12.2 Discussion .................................46 2.13 TRANSLATION OF DELETE OPERATIONS.................48 2.14 TRANSLATION OF CREATE OPERATIONS.................48 2.14.1 Overview ...................................48 2.14.2 Status of notInService .....................49 2.14.3 Status of notReady .........................49 2.14.4 Row Creation ...............................49 2.14.5 ANY DEFINED BY Syntax ......................50 2.14.6 Discussion .................................51 Newnan Expires August, 1994 Page iii DRAFT February, 1994 3. CONSTRAINTS ON SNMPV1 PROTOCOL USAGE ..................52 3.1 APPROACH..........................................52 3.2 DISCUSSION........................................53 4. SNMPV2 TRANSLATION PROCEDURES .........................54 4.1 GENERAL APPROACH..................................54 4.2 OBJECT DEFINITIONS................................54 4.2.1 Selected Procedures from RFC 1452 ...........54 4.2.2 Additional Procedures .......................55 4.2.3 Discussion ..................................56 4.3 TRAP DEFINITIONS..................................57 4.3.1 RFC 1452 Procedure ..........................57 4.3.2 Additional Procedures .......................57 5. CONSTRAINTS ON SNMPV2 PROTOCOL USAGE ..................58 5.1 PROCEDURE.........................................58 5.2 DISCUSSION........................................60 6. STATEMENTS OF COMPLIANCE AND CONFORMANCE ..............61 6.1 MAPPING OF THE OBJECT-GROUP MACRO.................61 6.2 MAPPING OF THE MODULE-COMPLIANCE MACRO............62 6.2.1 General Procedure ...........................62 6.2.2 Translation Compliance Proforma .............64 6.2.2.1 Proforma Overview...................64 6.2.2.2 Proforma Text.......................64 6.3 MAPPING OF THE AGENT-CAPABILITIES MACRO...........66 6.4 MAPPING OF THE MANAGEMENT OBJECT CONFORMANCE STATEMENT (MOCS) ...................................66 7. COMPLIANCE AND CONFORMANCE ............................68 7.1 COMPLIANCE........................................68 7.1.1 All Translated MIB Modules ..................68 7.1.2 SNMPv1 Translated MIB Modules ...............68 7.1.3 SNMPv2 Translated MIB Modules ...............69 7.2 CONFORMANCE.......................................69 ANNEX A (INFORMATIVE): DEFINITION OF MANAGEMENT INFORMATION (DMI) EXAMPLE..............................A-1 A.1 INPUT ISO/CCITT MANAGEMENT INFORMATION BASE........A-1 Newnan Expires August, 1994 Page iv DRAFT February, 1994 A.2 OUTPUT SNMPV1 MANAGEMENT INFORMATION BASE..........A-13 A.3 OUTPUT SNMPV2 MANAGEMENT INFORMATION BASE..........A-36 A.4 OUTPUT TEXTUAL-CONVENTIONS MACROS..................A-59 A.5 OUTPUT MODULE-COMPLIANCE MACRO.....................A-60 A.6 OUTPUT AGENT-CAPABILITIES MACRO....................A-63 A.7 APPLICABILITY OF MOCS..............................A-64 ANNEX B (NORMATIVE): SUPPORTING MODULES ..................B-1 B.1. SNMPV1 SUPPORT OBJECTS...........................B-1 B.2. SNMPV2 SUPPORT OBJECTS...........................B-7 B.3. TEXTUAL CONVENTIONS..............................B-13 B.4. MODULE-COMPLIANCE STATEMENT FOR SUPPORT OBJECTS ............................................B-19 ANNEX C: GLOSSARY ........................................C-1 ANNEX D: REFERENCES ......................................D-1 List of Figures FIGURE 1. MIB TRANSLATION ................................3 FIGURE 2. NATIVE MANAGEMENT ..............................4 FIGURE 3. PROXY MANAGEMENT ...............................5 FIGURE 4. SAMPLE INPUT REGISTRATION TREE (PARTIAL) .......17 FIGURE 5. SAMPLE OUTPUT REGISTRATION TREE (PARTIAL) ......20 List of Tables TABLE 1. TEXTUAL CONVENTIONS .............................10 TABLE 2. SIMPLE INPUT SYNTAX MAPPING .....................25 TABLE 3. VARIABLE LABEL GENERATION .......................32 TABLE 4. CLASS TABLE LABELS ..............................34 TABLE 5. SIDE TABLE LABELS ...............................35 TABLE 6. ANY TABLE LABELS ................................36 Newnan Expires August, 1994 Page v DRAFT February, 1994 TABLE 7. ACTION SYNTAX MAPPING ...........................43 TABLE 8. SNMPV1 ERROR MAPPING ............................53 TABLE 9. SNMPV2 ERROR MAPPING ............................59 REVISION HISTORY Issue 1.0, October 1993 This is the first issue of this document. The internet draft , dated February, 1994, is identical in content to Issue 1.0, October 1993. It has been reformatted for posting as an internet draft. Newnan Expires August, 1994 Page vi DRAFT February, 1994 1. INTRODUCTION This section provides an overview of ISO/CCITT and Internet Management Coexistence (IIMC) activities, insight into the problem being addressed by IIMC, and a brief introduction to the strategy adopted by IIMC: use of translated MIBs in either a proxy or native implementation. The section concludes by describing the scope of this document, and terms and conventions used by this document. 1.1 PROBLEM STATEMENT The need for enterprise network management has been addressed by development of network management standards within various communities, most notably the ISO/CCITT and Internet communities. * The ISO/CCITT community developed the Common Management Information Protocol (CMIP) [5], and related SMI documents [6,7,8]. * The Internet community developed the Simple Network Management Protocol (SNMP) [11], and its successor, SNMPv2 [RFC1448]. The Internet SMI is defined in [10] and [16]. These standards share a nearly common management model, but diverge due to differing management philosophies. Although functionally similar, the Internet and ISO/CCITT protocols and SMIs differ in terms of their complexity and specific operations. Business requirements for end-to-end enterprise management include the need to integrate the management of many different devices, potentially owned or administered by many independent organizations. This requires components to be accessed by ISO/CCITT management, Internet management, and proprietary management mechanisms in a manner which presents a unified view of the network, despite protocol and SMI differences. For example, many telecommunications and computer vendors, represented by organizations such as the Network Management Forum (NMF), and the U.S. government, as specified in the Government Network Management Profile (GNMP) Version 1.0 [25], have based their enterprise management model on the ISO/CCITT management model. These organizations are particularly interested in integrated management of devices that use the Internet management. This interest is primarily due to the widespread commercial implementation and use of Newnan Expires August, 1994 Page 1 DRAFT February, 1994 such devices, especially devices that use the Internet TCP/IP protocol suite. 1.2 OVERVIEW OF IIMC The ISO/CCITT and Internet Management Coexistence (IIMC) package includes the following documents. IIMCIMIBTRANS Translation of Internet MIBs to ISO/CCITT GDMO MIBs [23] IIMCOMIBTRANS Translation of ISO/CCITT GDMO MIBs to Internet MIBs IIMCMIB-II Translation of Internet MIB-II (RFC 1213) to ISO/CCITT GDMO MIB [20] IIMCPROXY ISO/CCITT to Internet Management Proxy [21] IIMCSEC ISO/CCITT to Internet Management Security[22] These documents together comprise a package aimed at integrating ISO/CCITT-based and Internet-based management systems. IIMC specifications address the problem that end-to-end management requires an integrated, unified view of the managed network, despite differences in management protocol and information structure. Integrated management can be facilitated by the development of "proxy" mechanisms which translate between functionally equivalent service, protocol, and SMI differences to create this unified view. MIB translation procedures can be used to support proxy management, as well as to take advantage of existing MIB definition and avoid duplication of effort. In this way, commercial investment in both ISO/CCITT and Internet-based management technologies can be preserved through deployment of common methods and tools which support integration. This overall strategy was outlined in a joint publication developed by the NM Forum and X/Open entitled "ISO/CCITT and Internet Management: Coexistence and Interworking Strategy" [24]. The documents included in the IIMC package are the next level of detailed specifications which implement several of the methodologies identified in the strategy. Additional specifications may be defined in the future. Newnan Expires August, 1994 Page 2 DRAFT February, 1994 1.3 MIB TRANSLATION PROCEDURES The foundation of IIMC is provided by a pair of Management Information Base (MIB) translation procedures. * IIMCIMIBTRANS [23] specifies translation procedures for converting MIBs from Internet MIB macro format into ISO/CCITT GDMO template format. * IIMCOMIBTRANS specifies translation procedures for converting MIBs from ISO/CCITT GDMO template format into Internet MIB macro format. The IIMC approach is to specify direct translation procedures which yield a pair of functionally-equivalent MIBs, as shown in Figure 1. +----------------+ +--------------------+ +----------------+ | Internet MIB | | MIB Translation | | GDMO MIB | | | | Procedures | | | | Format = | | Specified By | | Format = | | [RFC1212] & |---->| [IIMCIMIBTRANS] or |---->| [ISO10165-1] & | | [RFC1442] |<----| [IIMCOMIBTRANS] |<----| [ISO10165-4] | +----------------+ +--------------------+ +----------------+ Figure 1. MIB translation. MIBs translated by these procedures may be used to take advantage of existing MIB definitions when business needs require deployment in a different management environment. Translated MIBs may also be used to provide uniformity when multiple management environments are supported by a single system (e.g., dual stack managers). Finally, IIMC MIB translation procedures may be used to support service emulation by a proxy. 1.4 NATIVE MANAGEMENT MODEL The basic model for ISO/CCITT and Internet management is illustrated in the following diagram. Newnan Expires August, 1994 Page 3 DRAFT February, 1994 Manager Agent +-----------------------+ +----------------------+ |+---------------------+| |+-------------------+ | || Management || || Managed | | || Applications || || Resources | | |+---------------------+| |+-------------------+ | | | | | | | | | | | | | |+-----------+---------+| |+----------+---------+| || Manager | MIB || || Agent | MIB || |+-----------+---------+| |+----------+---------+| | | | | | | | | Management | | | Management | | | Services | | | Services | +-----------------------+ +----------------------+ | Management Protocol | | Management Protocol | +-----------------------+ +----------------------+ ^ ^ | | +------------------------------------+ Protocol Messages Figure 2. Native management. Within IIMC documents, this model is referred to as the "native" management model. MIBs translated using IIMC procedures can be used by "native" agent implementations. For example, an ISO/CCITT agent can make visible TCP/IP managed resources using the translated GDMO version of the Internet MIB-II [13] specified by [20]. Dual-stack managers or agents may also be implemented which support both the original MIB and the translated MIB generated using IIMC- specified procedures. Newnan Expires August, 1994 Page 4 DRAFT February, 1994 1.5 PROXY MANAGEMENT MODEL The basic model for ISO/CCITT to Internet proxy management is illustrated in the following diagram. This proxy is specified by this document. A similar approach could also be taken to specify an Internet to ISO/CCITT proxy, although no such IIMC document is currently specified. Manager Proxy Agent +-----------------------+ +---------------------+ +------------------ |+---------------------+| |+------+ +----------+| |+----------------- || Management || || GDMO | | Internet || || Managed || Applications || || MIB | | MIB || || Resources |+---------------------+| |+------+ +----------+| |+----------------- | | | |+-------------------+| | | | | | || Service || | | | | | || Emulation || | | | | | ||(scoping) || | | | | | || (filtering) || | | |+-----------+---------+| || (operations) || |+----------+------ || ISO/CCITT | GDMO || || (message || || Internet | Inter || Manager | MIB || || transformation)|| || Agent | MIB |+-----------+---------+| |+-------------------+| |+----------+------ | | | | |CMIS | | | | | | CMIS Services | | |Services | | | | SNMP "Servic | | | | | | | | | | | | | | SNMP| | | | | | | | | "Services"| | | | +-----------------------+ +---------------------+ +------------------ | CMIP | | CMIP | SNMP | | SNMP +-----------------------+ +---------------------+ +------------------ ^ ^ ^ ^ | | | | +---------------------+ +-------------------+ CMIP Messages SNMP Messages Figure 3. Proxy management. This ISO/CCITT to Internet proxy provides emulation of CMIS services by mapping to the corresponding SNMP message(s) necessary to carry out the service request. The service emulation allows management of Internet objects by an ISO/CCITT manager. The left hand side of the proxy behaves like an ISO/CCITT agent, communicating with the ISO/CCITT manager using CMIP protocols. The right hand side of the proxy behaves like an Internet manager, communicating with the Internet agent using SNMP protocols. The proxy relies on the existence of a pair of directly- related MIB definitions, where the Internet MIB has been translated into ISO/CCITT GDMO using the procedures specified in IIMCIMIBTRANS. The proxy uses these MIB definitions and rules to provide run-time translation of Newnan Expires August, 1994 Page 5 DRAFT February, 1994 management information carried in service requests and responses. The proxy is designed with a specified interface between the proxy and the underlying protocol stacks, and so deals primarily in terms of CMIS services and SNMP "services". The proxy emulates services such as CMIS scoping and filtering, processing of CMIP operations, and forwarding/logging of CMIS notifications by performing a mapping process which must be tailored for each protocol (for example, SNMPv1 and SNMPv2 are variants of the same protocol mapping process). 1.6 SCOPE OF THIS DOCUMENT This document (IIMCOMIBTRANS) specifies a heuristic method to translate from ISO/CCITT GDMO MIB specifications to Internet SNMPv1 and SNMPv2 MIB macro specifications. The method is intended to meet six objectives. * Lose as little functionality as possible in translation. * Minimize need for human involvement in translation. * Minimize cost to implement multi-stack (e.g., CMIP, SNMPv1 and SNMPv2) and proxy-based applications. * Support an end-to-end view (e.g., Generic Network Model) of distributed information resources that span many computing platforms and network elements. * Support translation to both SNMPv1 and SNMPv2 while minimizing differences between the two mappings. An important corollary is to generate objects and traps/notifications that are syntactically and semantically equivalent and can therefore be registered the same. * Within constraints of the other objectives, generate MIBs that are as consistent with customary Internet usage as possible. In particular, these should be compatible with common SNMP parsers. While entirely mechanized translation from an ISO/CCITT GDMO MIB to an Internet MIB is not always possible, the intent is to mechanize the process as much as possible and supply reasonable defaults that may be tempered by human judgment. This specification provides core methodology such that a GDMO template specification can be translated to Internet MIB macro notation. It thus supports native mode implementations. Newnan Expires August, 1994 Page 6 DRAFT February, 1994 Proxy implementations are beyond the scope of this document. However, in the longer term, MIBs translated using this method could be used in conjunction with a proxy architecture to enable interworking between ISO/CCITT managers and Internet agents. The body of this document is composed of the following sections. * Introduction * SNMPv1 Translation Procedures * Constraints on SNMPv1 Protocol Usage * SNMPv2 Translation Procedures * Constraints on SNMPv2 Protocol Usage * Statements of Compliance and Conformance * Compliance and Conformance Sample inputs and translated output (informative) appear in annexes. Annex B also provides some supporting Internet macro object specifications to assist in MIB translation and implementation. Two outstanding issues have been identified that are outside the scope of the present version of this document, but may be addressed in future versions: * definition of a Proxy for translated ISO/CCITT GDMO MIBs, and * definition of "Pragmas" to document human overrides to algorithmic translation in a systematic and machine readable form. Among other things, this might facilitate generation of proxies. This specification assumes existence of appropriate mechanisms and procedures for registry of translated objects. What those procedures might be and where such objects should be registered, however, are beyond the scope of this document. 1.7 TERMS AND CONVENTIONS This document assumes the reader is familiar with the concepts and vocabularies of Internet and ISO/CCITT management. In cases where there might be confusion between the two, words such as "ISO/CCITT", "GDMO" and "Internet" are inserted to avoid ambiguity. The term "SNMP" is used throughout this document generically to indicate both the SNMPv1 and SNMPv2 frameworks, unless a distinction needs to be made. The terms SNMPv1 and SNMPv2 are used to refer to the respective frameworks specifically. Newnan Expires August, 1994 Page 7 DRAFT February, 1994 Formal language constructs from the various MIB notations (ATTRIBUTE, OBJECT-TYPE, SYNTAX, etc.) are used verbatim in this text. Plurals of such keywords ending in upper case are expressed by appending "s" or "es" (e.g., NOTIFICATIONs) while those ending in lower case are suffixed with "'s" (e.g., TruthValue's). The terms "class" and "attribute" when expressed in lower case are generic, referring either to ISO/CCITT MANAGED OBJECT CLASSes and ATTRIBUTEs (respectively) or their translated Internet MIB counterparts. The term "arc" means a single level of branching within an Abstract Syntax Notation One (ASN.1) registration tree. The terms "enumerate" and "explode" are used synonymously to describe the process of translating ATTRIBUTEs and their values to OBJECT-TYPE macros. The term "scalar" when applied to a conceptual row means a value that can be expressed as single column. A "registry family" is defined to be a set of ASN.1 OBJECT IDENTIFIER arcs and nodes sharing a common immediate parent. Identifiers of Internet MIB macro constructs and GDMO templates are referred to as "labels". The following notation is used to specify mapping rules. * Symbols enclosed in quotes are literals. * Symbols enclosed in angle brackets ("<>") are variables that have different string values depending on instance or context. Variables may be embedded within quoted string literals. In this case, the value for the variable is substituted within the string to arrive at the mapped output. * Double upended bars ("||") signify the concatenation operator. Concatenate strings without intervening punctuation or white space to arrive at the resulting label. * Asterisks ("*") indicate that multiple instances of a variable may apply, in which case their values are concatenated to arrive at the output. Internet conventions are observed throughout the text. Customary SNMP types and textual conventions [17] are produced in the translated output whenever there is a straightforward mapping. New textual conventions may also be introduced in the act of translation. Considering the need to minimize differences between SNMPv1 and SNMPv2 Newnan Expires August, 1994 Page 8 DRAFT February, 1994 outputs, the SNMPv1 outputs are designed to anticipate SNMPv2 usage. This specification also introduces SNMPv2 textual conventions to support common constructs appearing in translated MIBs. The following table briefly introduces these conventions -- developed further in the body of the text and formally defined (using macro notation) in Annex B.3. Newnan Expires August, 1994 Page 9 DRAFT February, 1994 Pointer A generalized convention that can point to any SNMP MIB object -- or to none. ActionTrigger Initiates simulation of a translated ACTION. ActionStatus Reflects status of a simulated ACTION. AnyDefinedBy Facilitates translation of the ASN.1 ANY DEFINED BY construct. BitString Equivalent to the ASN.1 BIT STRING type. ChoiceOfIntOrOID Simplifies translated syntax of an ASN.1 construct that is a choice of INTEGER or OBJECT IDENTIFIER. ClassInstancePointer Points to a instance of an object group; or none. Complex Indicates that translated syntax maps to multiple objects -- but not multiple rows. MultiComplex Indicates that translated syntax maps to multiple objects that can be multiply occurring. GraphicString Maps the ASN.1 construct to SNMP. Parent Points to the immediately superior object with respect to ISO/CCITT management containment relationships. Recursion Points to syntax that is nested at the next lower level of recursion. RecursivelyNested Indicates whether particular syntax is recursively nested. TableIndex Provides a compact and potentially arbitrary (sub)index for a translated table. Table 1. Textual conventions. An SNMPv2 textual convention may imply compliance and/or conformance. The term "observe" when used below means either or both as applicable. Newnan Expires August, 1994 Page 10 DRAFT February, 1994 For purposes of brevity, the label of a textual convention may be referenced as follows. * A noun, meaning a conceptual column observing that convention or specific entry of that column, depending on the context. Thus "a ClassInstancePointer" might imply "an instance of an object observing the ClassInstancePointer textual convention". * An adjective, referring to a type of conceptual column, e.g., "a TruthValue type". To align SNMPv1 and SNMPv2 mappings -- and facilitate common discussion -- this specification requires SNMPv1 translations to observe the same textual conventions as SNMPv2, manifest in IMPORTS statements and the values of SYNTAX clauses. However, some SNMPv1 compilers can not support the TEXTUAL-CONVENTION macro. In such cases, equivalent ASN.1 type references can be introduced to allow compilation (e.g., insert the type definition Pointer ::= OBJECT IDENTIFIER instead of importing the Pointer TEXTUAL- CONVENTION macro). Newnan Expires August, 1994 Page 11 DRAFT February, 1994 2. SNMPV1 TRANSLATION PROCEDURES 2.1 RELATIONSHIP TO RFC 1212 While translation per se has not previously been widely investigated, RFC 1212 [12] does provide advice for adopting MIB objects from ISO/CCITT GDMO to Internet MIB macros. RFC 1212 advises a minimalistic approach to MIB specification, discouraging carryover of the complexities often found in ISO/CCITT GDMO specifications. Thus, it does not so much tell how to translate a MIB as provide advice for borrowing elements of a ISO/CCITT GDMO specification and constructing a MIB more in keeping with Internet philosophy. The translation procedure provided here seeks instead to provide as faithful a translation as possible, in order to support the objectives identified in Section 1. 2.2 MAPPING OF MANAGED OBJECT CLASSES AND ATTRIBUTES This subsection includes: * Framework, * Registration of Modules and Tables, * Structure of Class Tables, * Structure of Side Tables, * Enumeration of Attribute Values, and * Discussion. 2.2.1 Framework The framework that follows establishes the general approach to translation. It also introduces associated vocabulary used throughout the remainder of the text. Every MANAGED OBJECT CLASS input maps to a corresponding object group, the "class group". Each class group consists of one or more Internet MIB tables that are logically linked to each other, as follows. * A "class table" corresponds to the class as a whole. It contains objects representing ATTRIBUTEs and additional objects that reflect status and containment relationships. * Zero or more "side tables" accommodate complex (compound or multiply occurring) ATTRIBUTE values. Subsection 2.2.4 provides instruction on generation of side tables. Newnan Expires August, 1994 Page 12 DRAFT February, 1994 For each managed object mapped, there is a single entry in the corresponding class table, the "class entry". Associated with this may be zero or more "side entries" that accommodate complex ATTRIBUTE syntaxes. A "class instance" is a class entry together with any associated side entries. A ClassInstancePointer is an OBJECT IDENTIFIER that discriminates (points to) a class instance or to an instance of a native (non-translated) SNMP object group. This textual convention is specified in Annex B.3. The ClassInstancePointer is used in lieu of the OSI Distinguished Name (DN) and similar constructs, such as the [7]managedObjectInstance ATTRIBUTE. It is analogous to the DN in that it both names a particular instance of a managed object class and implies the type of the object pointed to. It is more compact but less mnemonic than the DN. 2.2.2 Registration of Modules and Tables Note that examples appearing in this section and throughout this text reflect the sample input and outputs of Annex A. The reader may also wish to refer to section 2.2.6.1 below, which provides further discussion and illustration of registration principles. Begin translation of a registry family of MANAGED OBJECT CLASS specifications by allocating a node under which the translated modules will be registered, the "output module subtree". Also assign a brief naming prefix to assist in labeling the contents of a corresponding ASN.1 module to be generated. This must be alphanumeric, beginning with a lower case letter. Not all objects or notifications of an input registry family need be translated together. If they are, the result is referred to as full translation. If not, that is partial translation. For a full translation, register the resulting ASN.1 module as: "{ 1 }" and name the resulting module: "MIB" || || "SNMPv1", e.g., MIBsmi2SNMPv1. For a partial translation, register the resulting ASN.1 module as: "{ 1 }" Newnan Expires August, 1994 Page 13 DRAFT February, 1994 and name the resulting module: "MIB" || || "SNMPv1Increment" || where the least translated arc number is the lowest relative arc number corresponding to any object translated. If no object is translated, the must be assigned manually to avoid possible collision.. For each MANAGED OBJECT CLASS in the input registry family, define a corresponding Internet MIB object group -- the class group. First, allocate a node under which the translated class groups will be registered, the "output class subtree". Beneath this output class subtree, assign a node to each class group, keeping the same relative numbering under the output class subtree as assigned to the equivalent MANAGED OBJECT CLASSes in the input class subtree. Next, assign arcs to the various tables within each class group. * Assign the class table arc 1 beneath the class group arc: "{ 1 }". * Assign arcs for side tables in ascending order beneath the class group arc, beginning with arc number two: "{ 2 }", etc.. Note: Since all ATTRIBUTEs expand into class tables or side tables, generated class groups never contain scalar values. For each table in the class group, define a table entry object and syntax consistent with RFC 1212 usage for table entries (naming of objects and entries is addressed below). 2.2.3 Structure of Class Tables For the entries of a class table, allocate the following conceptual columns and associated arcs sequentially. Reserve arc 0 beneath the class entry arc per the Internet Structure of Management Information (SMI). Assign arc 1 to the "class entry index": "{ 1 }". This is of textual convention TableIndex, i.e., provides the unique index for the entry but may otherwise be an arbitrary integer value without particular meaning. This object is not-accessible. Newnan Expires August, 1994 Page 14 DRAFT February, 1994 Note: The value of a ClassInstancePointer can be determined by concatenating: * The OBJECT IDENTIFIER of the class entry, * The value 1 (arc number for the class entry index), and * The subidentifier of that particular entry. Here, "concatenating" means arriving at a simple combined sequence of arc values, without repeat counts or nesting. The ClassInstancePointer is used in the translated MIB in lieu of the OSI Distinguished Name's and ObjectInstance's that represent relationships between managed objects. As discussed in Section 2.2.6.3, no direct translation of Distinguished Names is provided. Assign one conceptual column for each ATTRIBUTE of the translated class. Thus, assign arcs 2 through sequentially to the conceptual columns of the class table corresponding to the translated ATTRIBUTEs. Note: Instructions for mapping ATTRIBUTE syntax to conceptual columns of the class and side tables and assigning ACCESS levels appear in subsection 2.3. Assign arc to the parent object, a ClassInstancePointer that points to the superior (parent) class entry. This has read-only ACCESS. If the object could possibly be created or deleted by a management station, assign the last arc to a RowStatus object. This value has ACCESS of read-write and conforms to a subset of the SNMPv2 RowStatus textual convention as documented below. This convention allows creation and deletion of class instances. 2.2.4 Structure of Side Tables Assign arcs of side tables sequentially as follows. Reserve arc 0 beneath the class entry arc per the Internet Structure of Management Information (SMI). If the side table can have multiple entries per entry in the immediately superior table (which may be a class table or another side table) reserve arc 1 for the TableIndex. This is used to qualify the index(es) of superior table(s) to uniquely identify a particular entry of the table. It is not-accessible. Assign the next arcs to the conceptual columns that correspond to the ATTRIBUTE's complex value. Newnan Expires August, 1994 Page 15 DRAFT February, 1994 If the syntax being translated for this entry is recursive, i.e., may contain itself directly or indirectly, assign one arc for each of the following objects. * An object of textual convention Recursion, used to point to nested recursive syntax (discussed below in Mapping to the SYNTAX clause). Its ACCESS is read- write if the management station is allowed to update the syntax represented by the row, otherwise, access is read-only. * An object of textual convention RecursionFlag, used to indicate whether a conceptual row is pointed to by a Recursion pointer. ACCESS is read-only. If the object could possibly be created by a management station, assign to the final conceptual column a RowStatus object. This has ACCESS of read-write and conforms to the subset RowStatus convention. 2.2.5 Enumeration of Attributes All else being equal, enumerate PACKAGEs and their contents based upon a left-to-right scanning of the input ISO/CCITT GDMO specification. ATTRIBUTEs and their syntaxes may be enumerated multiple times when translating a MIB module, once for every template in which they are referenced. Thus if an ATTRIBUTE is included in the PACKAGEs of two MANAGED OBJECT CLASSes, it will be enumerated twice in the output -- once for each class group. Reuse of a pre-existing ATTRIBUTE translation is encouraged, and can be highlighted by using the REINSTANTIATES scannable REFERENCE clause described in Section 2.8. Note: Use of partial "proforma" translations might facilitate reinstantiation and make translation more efficient; such methods are currently beyond the scope of this specification. Enumerate ATTRIBUTEs and their syntaxes in the same sequence as declared in a PACKAGE. These translate to OBJECT-TYPEs that are assigned successive arcs in the class table. Enumerate all components of superclasses before those of subclasses. Thus where a package is refined by a subclass, first enumerate all components of the superclass, preserving the sequence of the superclass PACKAGEs. Explode ATTRIBUTEs of a subclass later, enumerating them in order of specification within the subclass. In the case of multiple inheritance, enumerate contents of superclasses left-to-right and depth first, i.e., enumerate all components attributable to one immediate superclass (and subclasses) before proceeding to the next. Newnan Expires August, 1994 Page 16 DRAFT February, 1994 2.2.6 Discussion 2.2.6.1 Registration Figure 4 illustrates the typical registration structure of an OSI MIB specification. Registration arcs for documents (modules), classes, notifications, etc. that correspond to the specification are organized in a common registry family. The root of this family is the "input subtree" -- the node labeled part2 in the example. joint-iso-ccitt ms(9) smi(3) part2(2) -- input subtree | +- asnModule(2) -- input module subtree | | | +- ManagedObjectClassDefinitions(0) | | | +- Attribute-ASN1Module(1) | | | +- NotificationASN1Module(2) | +- managedObjectClass(3) -- input class subtree | | | +- alarmRecord(1) | +- package(4) | | | +- additionalInformationPackage(18) | | | +- additionalTextPackage(19) | +- namingBinding(6) | | | +- logRecord-log(3) | +- attribute(7) | | | +- additionalInformation(6) | | | +- backedUpStatus(11) | | | +- eventType(14) | +- notification(10) -- input notification subtree | +- processingErrorAlarm(10) Figure 4. Sample input registration tree (partial). Newnan Expires August, 1994 Page 17 DRAFT February, 1994 Assign equivalent structure to the output, rooted in the "output subtree". The arc smi2Translated, for example, is (the root of) the output subtree shown in Figure 5. Number output arcs the same as equivalent input arcs in assigning registration for the output module, class and notification subtrees. If the input subtrees do not have this structure, still organize the output subtree in this way to simplify registration. Note: Assignment of naming prefixes and output subtrees are required activities, however, procedures for these are outside the scope of this document. Newnan Expires August, 1994 Page 18 DRAFT February, 1994 Assign these arcs labels that are similar but not identical to their analogs within the input subtree. In the Annex A example translation, input subtree labels "smi part2" resulted in the output subtree label "smi2Translated". iso member-body(2) csa(124) forum(360501) iimcManual(15) iimcModule(0) | smi2Translated(?) -- output subtree | +- smi2TranslatedModules(2) -- output module subtree | | | +- MIBsmi2ComplianceIncrement1 (0 1) | | | +- MIBsmi2SNMPv1Increment1 (1 1) | | | +- MIBsmi2SNMPv2Increment1 (2 1) | | | +- MIBsmi2ConventionsIncrement1 (3 1) | +- smi2TranslatedObjects(3) -- output class subtree | | | alarmRecord(1) -- object group | | | +- smi2AlarmRecordTable(1) -- class table | | | | | smi2AlarmRecordEntry(1) -- class entry | | | | | +- smi2AlaRecIndex(1) | | +- smi2AlaRecLoggingTime(2) | | +- smi2AlaRecMonitoredAttributes(20) | | +- smi2AlaRecParent(21) | | +- smi2AlaRecRowStatus(22) | | -- 7 side tables | +- smi2AlaRecCorrelatedNotificationsTable(2) | | | | | smi2AlaRecCorrelatedNotificationsEntry(1) | | | | | +- smi2AlaRecCorNotTableIndex(1) | | +- smi2AlaRecCorNotNotificationIdent.(2) | | +- smi2AlaRecCorNotSourceObject(3) | | +- smi2AlaRecCorNotRowStatus(4) | | | +- smi2AlaRecProposedRepairActionsTable(8) | | | smi2AlaRecProposedRepairActionsEntry(1) | | | +- smi2AlaRecProRepActTableIndex(1) | +- smi2AlaRecProRepActSpecificIdent.(2) | +- smi2AlaRecCorNotRowStatus(3) | | -- output notification subtree +- smi2TranslatedNotifications(10) Newnan Expires August, 1994 Page 19 DRAFT February, 1994 | +- processingErrorAlarm(10) Figure 5. Sample output registration tree (partial). Newnan Expires August, 1994 Page 20 DRAFT February, 1994 The structure of an output module subtree is as follows for a full translation (not all arcs are present in all cases): Arc 0: Compliance Statement. Arc 1: SNMPv1 Translation. Arc 2: SNMPv2 Translation. Arc 3: Translated Textual Conventions. However, incremental translation requires a mapping convention to assure unique registration of the translated modules. This requires an additional level of qualification for a partial translation, hence the use of the least translated arc number. Thus, since the Annex A example reflects an incremental translation and alarmRecord is the lowest numbered arc of any object translated (1), the translated SNMPv1 module is registered as { smi2TranslatedModules 1 1 }. Similar "increment" qualifiers apply to the other modules as well. 2.2.6.2 Rationale for Tables RFC 1212 recommends defining a table for every object group that can be multiply occurring within an agent. It would be very unusual for a MANAGED OBJECT CLASS not to have potentially multiple occurrences, especially given a generic network model that spans systems. Therefore, all object classes map to tables. The tabular approach has additional advantages. * It supports default values for new object instances. * It is easy to mechanize, since there is no need to recognize special cases that are not multiply occurring. 2.2.6.3 Rationale for the ClassInstancePointer The notion of a ClassInstancePointer is introduced since direct translation of Distinguished Name appears impractical for multiple reasons. * A possible ambiguity arises since NAME BINDINGs allow different object instances of the same MANAGED OBJECT CLASS to exist under parent objects of different classes. Likewise, different classes can have the same syntax for their distinguished attribute(s). Thus, a simple sequence of attribute values is not sufficient to uniquely distinguish an object instance. * Furthermore, NAME BINDINGs allow different instances of the same class to be subordinate to different types of parent. They even allow instances of a class to be contained recursively within others of the same class. Thus, in directly translating the DN one cannot assume a fixed sequence of parameters as Newnan Expires August, 1994 Page 21 DRAFT February, 1994 required for an INDEX clause (DNs for different instances of the same object class may have different numbers of RDNs). Such problems could in theory be resolved by fully translating the Distinguished Name and incorporating Attribute Type's as well as Attribute Value's into the subidentifier OID (in which case the INDEX clause would only need to specify one index, an OBJECT IDENTIFIER). While that is in theory possible, it would result in exceedingly verbose subidentifiers (on the order of 70 octets rather than 7). This is of serious concern due to PDU length restrictions of SNMP. RFC 1212 proposes a "rule of twenty," i.e., no more than twenty attributes per operation. That guideline was designed for relatively compact subidentifiers. When using an RDN for an INDEX, this would more likely amount to a "rule of three," which is why comprehensive translation of the ISO/CCITT DN to an INDEX appears impractical. The result of this approach is that Distinguished Names are not translated at all. Similar functionality (naming of objects) is instead provided by the ClassInstancePointer's that identify table entries corresponding to managed objects. Each class or side table has within it at most one TableIndex, a non-accessible indexing object of type INTEGER. This value may have no significance other than to discriminate between entries within that table. While a class table has exactly one index (its own TableIndex), a side table shares the index of its class table and any superior side tables, qualifying these as necessary with its own indexing object. Assignment of TableIndexes is discussed in subsection 2.14 (Translation of Create Operations). The class of a ClassInstancePointer is implicit in the prefix corresponding to the class table. A single mapped ClassInstancePointer conveys the information of both. 2.2.6.4 Relationship Management The ClassInstancePointer is the basis for all translation of relationship management, including containment. For the ISO/CCITT Structure of Management Information (SMI), object naming documents the containment relationships. A subset of such functionality is mapped via the Parent pointer, which allows the immediately superior object to be found, its superiors, and so forth. Newnan Expires August, 1994 Page 22 DRAFT February, 1994 The optional children object group (see Annex B) provides a subset of scoping functionality. That facilitates discovery of the entries immediately subordinate to a class entry. A ClassInstancePointer may reference a native SNMP object (one that was not translated). That allows such objects to be incorporated in generic network models which may span many systems, allowing common notifications, logging, trouble exchange, etc. A native object is ordinarily treated as an immediate subordinate of the internet system (as regards containment relations). The exception is a table sharing one or more indexes with a superior table. In that case, the subordinate table is consider to be contained within the superior one when interpreting (OSI) containment relationships. 2.2.6.5 Attributes of top For the following reasons, most attributes of [7] top are not directly translated. * Most of these notions would be unfamiliar to the Internet user. Thus their presence would add questionable value. * Multi-valued attributes would require additional side tables for all object class groups, which would be cumbersome. * Managed object class is implicit in the class prefix and thus does not require a special attribute. * An allomorphs attribute is supported in ISO/CCITT to allow dynamic recognition of allomorphs which are supported by an instance. Since concise MIB notation does not support allomorphs, there is no reason to list them. * Presence or absence of conditional PACKAGEs can be detected by using a Get-Next Request, then determining whether the conceptual rows returned are as expected. No special attribute is needed. In ISO/CCITT systems management, ambiguity may (in rare cases) arise about what NAME BINDING to use when creating an object. For example, two alternative NAME BINDINGs might associate the same subordinate and superior classes, but with different semantics. CMIS addresses this by allowing the NAME BINDING identifier to be specified using M-CREATE. The omibtransSptNameBindingTable (Annex B) provides for this contingency. Since this is an unusual situation, it is handled by an auxiliary table rather than by defining a special object for every class group. 2.2.6.6 ATTRIBUTE GROUPs Newnan Expires August, 1994 Page 23 DRAFT February, 1994 This construct provides an abbreviated form whereby CMIP can refer to a grouping of ATTRIBUTEs collectively. That does not map to the SNMP. Translated objects corresponding to ATTRIBUTEs must be fetched explicitly (individually). 2.3 MAPPING TO THE SYNTAX CLAUSE Syntactical mappings for simple (scalar) and complex (multi- valued) syntax are discussed separately below, as is the special procedure for translating ANY DEFINED BY syntax. The procedures for complex syntax also addresses the syntax and semantics of optionality. 2.3.1 Procedure for Simple Input Syntax 2.3.1.1 Mapping Following are the rules for translating non-constructed (scalar) syntax. Always assign a translated SNMPv1 object the same (actual) syntax as for SNMPv2 usage. SNMPv2 usage includes standard SNMPv2 types [16] and textual conventions [17]. It also includes additional textual conventions specified in Annex B.3. The following table summarizes the textual conventions and SNMPv2 types that are anticipated by SNMPv1 translations. Any textual conventions used shall be imported into the translated module. Newnan Expires August, 1994 Page 24 DRAFT February, 1994 ISO/CCITT SNMPv2 SNMPv1 Construct BIT STRING BitString BitString Convention Convention BOOLEAN type TruthValue TruthValue Convention Convention CHOICE of INTEGER ChoiceOfIntOrOID ChoiceOfIntOrOID or OBJECT Convention Convention IDENTIFIER counter ATTRIBUTE Counter32 & INTEGER Counter64 Types ENUMERATED type INTEGER with named INTEGER with named values values gauge ATTRIBUTE Gauge32 Type INTEGER GeneralizedTime & DateAndTime DateAndTime UTCTime Convention Convention GraphicString GraphicString GraphicString convention convention IA5String, DisplayString DisplayString NumericString, Convention Convention PrintableString, VisibleString INTEGER Type INTEGER with INTEGER typing values, else Integer32 or UInteger32 ObjectInstance or ClassInstancePoint ClassInstancePoint DN er Convention er Convention REAL; or choice of Integer32 or INTEGER REAL or INTEGER UInteger32 Table 2. Simple input syntax mapping. For SNMPv2, use Counter64 only if Counter32 cannot accommodate all permissible values. Use UInteger32 where negative choices are not permitted; otherwise use Integer32. For SNMPv1, INTEGER must always be used instead of Counter64/32, Integer 32, or UInteger32 types. When mapping an OSI time construct having less granularity to the DateAndTime convention, pad the unmatched values (least significant) of the convention with zero. Newnan Expires August, 1994 Page 25 DRAFT February, 1994 Map a REAL to an INTEGER by selecting an appropriate unit of measurement, i.e., an INTEGER raised to a power of ten. For SNMPv1, document the scaling factor in the DESCRIPTION clause; for SNMPv2, provide this information in the UNITS clause. Map a CHOICE of REAL or INTEGER to INTEGER, simplifying the syntax. Also simplify the syntax by mapping CHOICE of INTEGER or OBJECT IDENTIFIER to the ChoiceOfIntOrOID textual convention. That convention is specified in Annex B.3. Transform ENUMERATED types to named INTEGER types, mapping the value (0) to (32767). Document in the DESCRIPTION clause that only the named values may be used. Treat a constructed type that contains no more than one scalar (e.g., various forms of string specialization) as if it were the contained scalar. For ASN.1 string types that are subsets of ASCII (PrintableString, NumericString, IA5String, VisibleString, etc.) use DisplayString if at all possible (which does imply a length restriction). Implementations shall comply with the NVT ASCII subset where practical. Map other string constructs (e.g., GraphicString) to OCTET STRING. As necessary, define TEXTUAL-CONVENTIONs for scalar attribute values that will be used in multiple contexts (e.g., appear in more than one context in a translated MIB module). Import and reference existing conventions whenever that is an option. When defining new conventions, populate their DESCRIPTION clauses with the same text that would otherwise appear in the DESCRIPTION clause of an OBJECT-TYPE macro (discussed below). Package these in a separate "conventions module". Import such conventions into the translated SNMPv1 and SNMPv2 modules as appropriate. For a full translation, label the conventions module: "MIB" || || "Conventions". and register it as: { 3 }. For an incremental translation, the same module label and object identifier qualifier rules apply as described previously in Section 2.2.6. 2.3.1.2 Discussion Internet SMI precludes a named INTEGER value of zero. Some compilers will not accept it. 32767 is a number that Newnan Expires August, 1994 Page 26 DRAFT February, 1994 practically any machine architecture can support, large enough so it should not conflict with any enumerated actually specified. If collisions occur, human judgment must be used to revise named INTEGER values such that no collisions appear in the translated MIB. Allowing optional conceptual columns within rows is not consistent with the philosophy of RFC 1212, but neither are the MIBs the procedure seeks to translate. However, optional columns can be accommodated by SNMP using the Get- Next request. In that case protocol returns inconsistent object ID prefixes, rather than an error condition, for any non-present objects. These rules will work for most but not all cases. Human judgment must be applied where they do not, e.g., an OSI counter uses a modulus not supported by SNMP, a real value ranges so widely a single scaling factor can not be applied, etc. 2.3.2 General Procedure for Complex Input Syntax 2.3.2.1 Mapping Map all complex syntax -- that which can not be mapped to a single columnar entry -- to side tables. Apply the following rules recursively as necessary to create the side tables. * For a given level of nesting, when encountering any of the following -- CHOICE, SEQUENCE (OF), or SET (OF) -- create a new side table; and in the current table, provide a Complex or MultiComplex column that points to it. If the mapped syntax is singly occurring (CHOICE, SEQUENCE, SET), the side table pointer is of type Complex. If the mapped syntax is multiply occurring (SEQUENCE OF, SET OF), the side table pointer is of type MultiComplex. Given the recursive enumeration process, a side table may itself have side tables. * Having decomposed complex syntax into scalar elements, apply the same rules as for simple syntax in determining the value for each SYNTAX clause. * If the syntax mapped by a side table is recursive -- can directly or indirectly contain instances of itself -- allocate a Recursion pointer and a RecursivelyNested flag before the RowStatus flag. This RecursionPointer when populated points to the next lower level of nested syntax (which may be in another table). The RecursivelyNested flag indicates whether a given row is pointed to by a recursion pointer, or is at the outermost level of nesting. Newnan Expires August, 1994 Page 27 DRAFT February, 1994 The following apply for all forms of optional syntax, whether scalar or complex. * Enumerate objects for all possible values, including optional values for CHOICEs, SETs and SEQUENCES. * Optional syntax may be nested, e.g., a CHOICE may be OPTIONAL. When that is the case, the rules of presence apply cumulatively, with outermost levels taking precedence over contained levels. Semantics of optionality differ depending on the syntax translated. * For CHOICE types, the agent enforces that exactly one option will be populated at any time (at most one if other optionality applies). Successfully setting new column(s) corresponding to the value of a CHOICE automatically causes pre-existing values to be destroyed. * For SET OF CHOICE types, multiple conceptual rows may be mapped to. However, exactly one choice is populated per row. * For OPTIONAL types that are scalar (including optional AnyDefinedBy pointers) the omibtransSptDestroyObjectTable shall be implemented. That allows previously populated values that are no longer wanted to be deleted by a management station without destroying and recreating the containing rows. * Destroy complex types as needed using RowStatus (discussed further below). * The agent enforces that otherwise mandatory objects within a conditional PACKAGE may be populated only at the time the class instance is created. * The agent is generally responsible for enforcing consistency with ISO/CCITT usage regarding presence or absence of translated objects. 2.3.2.2 Discussion This is the messiest part of the translation process, but cannot be avoided while translating complex GDMO MIBs. One way of viewing side tables is that constructed types are put in "third normal form," i.e., broken up into a set of flat tables each of which has a unique key. That is true for all tables except side tables of Complex type, which are extensions of their superior tables and have exactly the same indexes. The SNMP does not support SET (OF) constructs. Those map to the SEQUENCEs (OF) side table entries, as do all forms of complex syntax. The Complex and MultiComplex types are formalisms whose invariant values are determined when the MIB is translated. Their purpose is to document that the actual data is Newnan Expires August, 1994 Page 28 DRAFT February, 1994 elsewhere, i.e., in the side tables named. Since these types are invariant there is no need ever to fetch their values over a network. As discussed below (Mapping of the INDEX Clause) explicit pointers are not required to locate parent entries given side table entries; or vice versa. Such relationships are implicit in the INDEX structure. 2.3.3 Procedures for ANY DEFINED BY Syntax Translate ANY DEFINED BY syntax using one of the three procedures set forth below. The procedure depends whether: * The syntax resolves to exactly one choice, * The syntax references ATTRIBUTE values, or * Neither of the above cases apply. In the simplest case, the ANY DEFINED BY value resolves to a specific syntax for a particular object class. For example, this may happen when that syntax is resolved due to refinement of a superior class. In this case, treat the ANY DEFINED BY construct as if a direct reference to the resulting syntax. Document that in the translator's Proforma (see 6.2.2). If the ANY DEFINED BY construct references an ATTRIBUTE value, map the construct to an object that observes the AnyDefinedBy textual convention. Such a pointer (when populated) points to an entry in a side table holding syntax for the appropriate ATTRIBUTE. The side table will typically be in a different class group from the table holding the AnyDefinedBy pointer. A typical example is the log record that points to a historical value of an ATTRIBUTE. For instance, a StaChaDefOldAttributeValue AnyDefinedBy pointer might point to a columnar entry of a system class table that represents AdministrativeState. In this case, only the TableIndex, AdministrativeState, and RowStatus columns would be populated in the row that is pointed to. This is because the entry is historical and not associated with any current class entry. Likewise, the entry's TableIndex does not correspond to any current entry. To avoid ambiguity between current and historical information, the Parent pointer of a historical ATTRIBUTE entry in a class table is set to zero (0). If the ATTRIBUTE value referenced by AnyDefinedBy pointer is in a side table, then the entry pointed to in the side table has no corresponding entry in the parent table. This allows differentiation of historical and current ATTRIBUTE values in the table. Note that an AnyDefinedBy pointer always references a side entry directly, rather than pointing to an object of type Complex or Multi-Complex. Syntax referenced by an AnyDefinedBy pointer is regarded as an extension of the class group holding the pointer. Thus, Newnan Expires August, 1994 Page 29 DRAFT February, 1994 the context and enforcement of consistency rules are both determined by the position of the AnyDefinedBy pointer in its class group. Once a class entry is created, the value of an AnyDefinedBy pointer within it may only be deleted or changed if the new syntax (or absence thereof) is valid. In such cases, the agent automatically destroys any syntax the pointer previously pointed to, deallocating associated row indexes as well. As always, it is the responsibility of the agent to enforce semantics of the managed object. The manager need not be aware of consistency rules except in cases where it is allowed to populate ANY DEFINED BY constructs. Occasionally, ANY DEFINED BY syntax neither resolves to a single value nor corresponds to an ATTRIBUTE value. In that case, enumerate the syntax as an ANY DEFINED BY pointer pointing to an "ANY table". An ANY table is very similar to a side table. It has identical structure except it has one additional indexing object -- the InstancePointer -- that precedes the TableIndex object. All its other objects have the same syntax as an equivalent side table. However, since it may be referenced by multiple class groups, an ANY table has different registration, INDEX arguments and labeling conventions from a side table. The InstancePointer points to the superior table entry holding the associated AnyDefinedBy pointer, or, the superior ANY table entry. The InstancePointer and TableIndex (in that order) provide the two parameters for the INDEX clause. An ANY table belongs to its own OBJECT-GROUP ("ANY group") rather than a class group. This group contains the ANY table to be referenced by AnyDefinedBy pointers, and possibly, additional ANY tables subordinate to that table (analogous to side tables). To register ANY tables, assign an output "discriminator subtree" for each input registry family of OBJECT IDENTIFIERs that discriminates ANY DEFINED BY syntax. Reserve an arc in the output tree for each OBJECT IDENTIFIER of the input family, keeping the same relative arc number. The resulting arcs are the ANY group arcs. Beneath an ANY group arc, assign arc 1 to the (highest level) ANY table holding syntax that corresponds to the associated OBJECT IDENTIFIER in the input registry family. If the ANY table has subordinate tables, assign those Newnan Expires August, 1994 Page 30 DRAFT February, 1994 sequential arcs beneath the ANY group arc beginning with arc two. For example, the draft Software Management Function (ISO/IEC JTC1/SC21 N7949) defines an alarmEffectOnServiceParameter to be included in the ManagementExtension parameter of the AdditionalInformation parameter of the AlarmInfo field in an alarmRecord. In this case, the input OID that discriminates the ManagementExtension ANY DEFINED BY is: { joint-iso-ccitt ms(9) function(2) partN(?) parameter(5) 2} Thus, in a translation of the Software Management Function (functionN), an output "discriminator" subtree would be allocated to this OID: functionNTranslated(?) | +-- parameter(5) | | | +-- alarmEffectOnServiceParameter(2) | | | +-- alarmEffectOnServiceParameterTable(1) | +-- other output module, class, & notification subtrees and the associated syntax AlarmEffectOnServiceParameter (BOOLEAN) would be expanded as a column of the alarmEffectOnServiceParameterTable. Each row of the AdditionalInformation side table holds an AnyDefinedBy pointer to a ManagementExtension. Suppose one AdditionalInformation side table row has the name (object identifier) A, and its AnyDefinedBy pointer refers to row B of the alarmEffectOnServiceParameterTable. In this case, the InstancePointer variable of row B must contain the object identifier value A (pointing back to the superior entry). The index for row B uniquely distinguishes row B from all other entries in the alarmEffectOnServiceParameterTable, whether associated with the AdditionalInformation table or any other superior table. xxxAdditionalInformationTable +-------------------------------+ +-----------------------------------+ |xxxAdditionalInformationEntryA | |alarmEffectOnServiceParameterEntryB| +-------------------------------+ +-----------------------------------+ |xxxTableIndex|..|xxxInformation|->|aInstancePointer|..|aTableIndex | |Value={A} | |Value={B} |<-|Value={A} | |Value={B} | +-------------------------------+ +-----------------------------------+ | | | | +-------------------------------+ +-----------------------------------+ The TableIndex variable in row B, like every TableIndex, discriminates this entry in the table from other entries in Newnan Expires August, 1994 Page 31 DRAFT February, 1994 the same table. The TableIndex of an ANY table also enables creation of an entry by a management station and discrimination between multiple entries in a subordinate ANY table corresponding to a common superior entry. Neither of these capabilities apply to the AlarmEffectOnServiceParameter example. However, all ANY tables have a TableIndex for consistency. 2.4 GENERATION OF INTERNET MIB LABELS The previous subsection completed the procedure for enumerating OBJECT-TYPE macros. This subsection explains how to label them. 2.4.1 Notation The following variables are used to generate labels. Notation One (ASN.1) production, e.g., "additionalText". Label of an ATTRIBUTE template, e.g., "probableCause". module to be generated and associated labels, e.g., "smi2." Table 3. Variable label generation. The notation _*_ means the concatenation of one or more s together. This form is used for naming side tables, with one concatenated for each level of side table subordination. A side table immediately subordinate to the class table will have one concatenated in its label; a table immediately subordinate to that one will have two s concatenated; and so forth. 2.4.2 Abbreviation Procedure Concatenation of constituent labels can result in lengthy mappings for resulting labels that require abbreviation. Newnan Expires August, 1994 Page 32 DRAFT February, 1994 Abbreviate a label as follows. * Take up to the first three characters of the label. * Find the first special (upper case or numeric) character subsequent to those three, if any. * Append that special character and up to two subsequent characters to the initial characters of the output label. * In either case, "up to" means unless the end of the (text comprising the) label is reached. For a , spell it out in full to arrive at the concatenated names of the class table, class entry and entry syntax. Use the abbreviated form to create names of individual columns in the class table and subsequent tables. For an , spell in out it full to arrive at the concatenated names individual columns in the class table. Use the abbreviated form for subsequent tables of the class group. For an , spell in out it full to arrive at the name of the corresponding column in the highest level table in which it is referenced. Use abbreviated forms for subsequent tables. 2.4.3 Mapping Procedure Considering the above abbreviation rules, use the following mapping rules to arrive at labels for translated OBJECT-TYPE macros. Newnan Expires August, 1994 Page 33 DRAFT February, 1994 Label Syntax and Example class table || || "Table" e.g., smi2AlarmRecordTable class entry || || "TableEntry" e.g., smi2AlarmRecordTableEntry class entry || TableIndex || "TableIndex" e.g., smi2AlaRecTableIndex class entry || CLASS column for || || attribute value e.g., smi2AlaRecLoggingTime class entry || parent || "Parent" e.g., smi2AlaRecParent class entry || RowStatus || "RowStatus" e.g., smi2AlaRecRowStatus Table 4. Class table labels. Newnan Expires August, 1994 Page 34 DRAFT February, 1994 Label Syntax and Example side table || || || * || "Table" e.g., smi2AlaRecCorrelatedNotificationsTable side entry || || || * || "TableEntry" e.g., smi2AlaRecCorrelatedNotificationsEntry side entry || TableIndex || || * || "TableIndex" e.g., smi2AlaRecCorrelatedNotificationsTableIndex side entry || CLASS column for || || * attribute value e.g., smi2AlaRecCorNotNotificationIdentifier side entry || recursion || || * || "Recursion" e.g., smi2EveForDisDisConNotRecursion side entry || recursively || || * nested flag || "RecursivelyNested" e.g., smi2EveForDisDisConNotRecursivelyNested side entry || RowStatus || || * || "RowStatus" e.g., smi2AlaRecCorNotRowStatus Table 5. Side table labels. Make the label for the syntax of a table entry the same as that of the table entry, except, promote its first character to upper case. Therefore, for smi2AlarmRecordEntry the corresponding syntax is Smi2AlarmRecordEntry. Newnan Expires August, 1994 Page 35 DRAFT February, 1994 Assign labels to objects of an ANY table as follows: Label Syntax ANY table || * || "Table" ANY entry || * || "TableEntry" ANY entry || * InstancePointer || "InstancePointer" ANY entry || * TableIndex || "TableIndex" ANY entry || * column for attributes' values ANY entry || * recursion || "Recursion" ANY entry || * recursively || "RecursivelyNested" nested flag ANY entry || * RowStatus || "RowStatus" Table 6. ANY table labels. 2.4.4 Discussion In choosing the naming prefix, try to make it both mnemonic and unique. Often, the label of the OBJECT IDENTIFIER from the input specification provides an appropriate choice, e.g., "smi2". This approach is somewhat verbose. It does facilitate mechanization, also, ambiguities and collisions should be rare. There is the additional advantage that generated labels can be used for C and C++ language program variables without further manipulation. Separating constituent ids with hyphens would increase readability and decrease likelihood of ambiguity. Unfortunately, many Internet MIB compilers do not allow this. For this reason, hyphens must be removed from input labels in arriving at output labels. Newnan Expires August, 1994 Page 36 DRAFT February, 1994 Having dealt with labeling issues, this discussion returns to the mapping of OBJECT-TYPE clauses. 2.5 MAPPING TO THE ACCESS CLAUSE This is straightforward. Note that ADD-REMOVE and GET- REPLACE map to "read-write", while GET maps to "read." REPLACE (without GET) maps to write-only. There is no direct mapping to SET-TO-DEFAULT, since SNMP requires values to be explicitly set for existing objects. 2.6 MAPPING TO THE STATUS CLAUSE Always specify STATUS mandatory. 2.7 MAPPING TO THE DESCRIPTION CLAUSE For all cases in this subsection, carry over text from associated ISO/CCITT constructs, stripped of enclosing s, making sure any embedded double quotation marks are sanitized (i.e., replaced with single-quotes or removed). The variables (encased in angle brackets "<>") are all as defined for the input OSI constructs. If an object observes a textual convention, do not restate the DESCRIPTION of that convention. If an object corresponds to a translated MANAGED OBJECT CLASS, insert the following information in the class table's DESCRIPTION clause. * State that "All objects of this object group are translated from the ISO/CCITT MANAGED OBJECT CLASS according to the NMF IIMCOMIBTRANS specification and conform to behavioral requirements that it specifies." * Carry over any BEHAVIOUR clauses of the class's mandatory PACKAGEs. Optionally, carry over the BEHAVIOUR clauses of mandatory PACKAGEs for superclasses from which the object is derived. * State the translated notifications that may be emitted by the class group. If an object corresponds to part of a translated conditional PACKAGE (i.e., corresponds to an ATTRIBUTE or ACTION), the following rules apply. * If this is the first translated OBJECT-TYPE corresponding to a particular conditional PACKAGE, state "This object belongs to the Newnan Expires August, 1994 Page 37 DRAFT February, 1994 package, present if " where is inserted stripped of enclosing quotation marks. * If this is a subsequent translated OBJECT-TYPE corresponding to the same conditional PACKAGE, insert the text "This object is also part of the package." * Optionally carry over text from the BEHAVIOUR clauses of conditional PACKAGEs. If that is done, do so only for the first object enumerated for the PACKAGE. If an object represents an option of a CHOICE, insert text stating "This object corresponds to the option of the choice. Only one such choice may be present in a table. Setting a new value for this choice implicitly deletes any pre-existing value.", where: * The is the (innermost) field reference label of the input ASN.1 syntax corresponding to this particular object; and * The is the type reference label of the containing ASN.1 input syntax that specifies the CHOICE keyword. If an object represents OPTIONAL syntax, state "This object corresponds to the option, which may or may not be present in a given table entry.", where is the (innermost) field reference label of the input ASN.1 syntax corresponding to this particular object. A particular object may have multiple forms of optionality (conditional PACKAGE, CHOICE and/or OPTIONAL syntax) in which case the DESCRIPTION clause will have comments documenting each form. Also provide in this clause any information that would be included in an SNMPv2 UNITS clause. Insert additional text in this clause if the mechanically translated result is deemed hard to understand, or there is additional information from normative text that should be carried over. 2.8 MAPPING TO THE REFERENCE CLAUSE The translation procedure captures information about OSI constructs associated with an OBJECT-TYPE by means of machine scannable fields within the REFERENCE clause. The primary purpose of this information is to allow interpretation of Management Object Conformance Statements (MOCS -- see below). Newnan Expires August, 1994 Page 38 DRAFT February, 1994 Scannable text shall be present only in the REFERENCE clauses of macros that: * are object groups; * are class tables; * occupy columns within class tables representing translated syntax; * are in top-level ANY tables (not subordinate to other ANY tables) representing translated syntax; or * correspond to field names referenced in Management Object Conformance Statements (MOCS -- discussed below). In such cases, reference is made only at the highest level (least subordinate) object that represents the field. The scannable text has the structure: [REFMACRO ]* [MANAGED OBJECT CLASS object-identifier ] [PACKAGE [object-identifier] ] [ATTRIBUTE object-identifier [SET-BY- CREATE] ] [ACTION object-identifier [CONFIRMED]] [FIELD field-name-label] [REINSTANTIATES object-identifier] [NOTES ] The notation is adopted from GDMO [8] subsection 9.2, "Conventions used in template definitions". Hyphenated terms are as defined in GDMO [8] subsection 9.2, "Notational tools for managed object definition", and correspond to instances of those terms encountered in the input specification. The object-identifiers correspond to the labels that immediately precede them. The presence or absence of these optional constructs within a particular scannable clause depends on the following: * The MANAGED OBJECT CLASS clause is specified for the class table object but is not repeated for other objects within the class group. * The REFMACRO construct may optionally be specified for the object group (see the OBJECT-GROUP macro specified in section 6.1). In this case the string literal is logically substituted for any occurence of the wherever it occurs in the scannable REFERENCE clauses of any template within the object group. The must: * consist of a single alphanumeric identifier, * begin with a lower case alpha character, and * be unique from any other label appearing in the translated output. Newnan Expires August, 1994 Page 39 DRAFT February, 1994 The must: * not contain any of the keywords found in the scannable REFERENCE clause, and * be delimited by the first keyword encountered following the , or the REFERENCE clause delimiter ("), whichever occurs first. For example, as illustrated in Annex A, the construct "REFMACRO smi2Doc Rec. X.721 | ISO/IEC 10165-2 : 1992" means that all occurrences of "smi2Doc" should be replaced by the expanded document reference shown above. * The PACKAGE construct is present only for objects corresponding to syntax translated for PACKAGEs. * The ACTION construct is present if the object maps to an ACTION (discussed elsewhere in this document). The construct CONFIRMED is present only if the ACTION is confirmed. * The FIELD construct is present if the object maps to an ACTION or NOTIFICATION field. The field-name-label is the label in the ASN.1 syntax of the action information, event information, or reply information of the action or notification. In rare cases, there may be no field-name-label in the ASN.1 syntax. If this occurs, any available MOCS proforma for the ACTION or NOTIFICATION shall be consulted for the field-name-label. If no MOCS proforma is available during translation, one of the suggestions specified by ISO/IEC 10165-6, Clause H.8, "Action/notification field name labels", shall be applied to generate artificial field-name-labels. * Object-identifier values shall be present when corresponding OSI constructs are registered. If this construct is absent, the corresponding label is understood to be within the scope of the GDMO specification of the associated MANAGED OBJECT CLASS. These must be ASN.1 OBJECT IDENTIFIER values that could validly be referenced in the containing MIB module. However, they may include macro identifiers, in which case substitution takes place before evaluating the result. * The SET-BY-CREATE construct represents a semantic that does not completely map to SNMP. This construct is present if and only if the corresponding ATTRIBUTE has the GET property but the object's BEHAVIOR clause allows the ATTRIBUTE to be populated using the M- Newnan Expires August, 1994 Page 40 DRAFT February, 1994 CREATE service. In this special case, the ACCESS clause shall specify read-write. However, such objects may only be set at time of row creation. Attempts to update these objects at other times shall result in protocol violation. * OBJECT-TYPEs corresponding to ACTIONs (see Section 2.11) reflect that fact with the presence of the ACTION clause and associated PACKAGE and possibly FIELD clauses. * The REINSTANTIATES construct, if present, references an existing translation of the syntax and semantics applying to the present object. This construct is used where a textual convention is inappropriate, i.e., when reusing Complex or MultiComplex syntax. Never invoke the REINSTANTIATES construct to reference another object that also uses this construct. Instead, reference the object that was originally translated. The names the column of the table in which the construct was previously translated. The gives the registration of that column. Presence of this clause means that syntax, semantics and exercise of human judgment of this translation are identical to those of the object referenced. * The NOTES construct, if present, precedes free format text that provides additional information about the reference. The free format text, which must be separated by white space from the NOTES keyword, comprises the rest of the REFERENCE clause. 2.9 MAPPING TO THE INDEX CLAUSE 2.9.1 Procedure For the class table, list its TableIndex as the one object in the INDEX clause. For a side table, list the TableIndex of the class table; followed by TableIndexes of any superior side tables in descending order; followed by the side table's own TableIndex (if any). 2.9.2 Discussion Newnan Expires August, 1994 Page 41 DRAFT February, 1994 The table index structure allows one to find subordinate tables' entries that are associated with a superior tables entry, and vice versa. For example, knowing the subidentifier of a class entry, one can use a Get-Next operation referencing the name of a side table appended with that subidentifier concatenated to find the first associated entry (if any) in that side table. Subsequent Get-Next operations will reveal subsequent entries. A similar approach will discover entries of side tables subordinate to other side tables. Also, indices of superior tables (class tables included) are implicit in the indices of all subordinate tables. Thus there is no need for explicit pointers from class entries to side tables or vice versa. The Complex and MultiComplex types are provided for purposes of documentation only and are not necessary to find related rows within a class group. The AnyDefinedBy pointer is not necessary to find side tables either, but helps determine which side table to examine when there are many alternatives. There may be a "natural key" for a particular multi-valued syntax, e.g., an address or name. In this case, an artificial index may be inappropriate. Human judgment must weigh whether there is in fact a "natural" key and whether the length of the associated subidentifier would be permissible for purposes of indexing. If the natural key is an integer, treat that as a refinement to TableIndex, documenting that refinement in the object's DESCRIPTION clause. Note: It is not recommended that natural keys other than integers be used for the INDEX parameter of a class table, as that will result in very long subidentifiers and complicate allocation of indexes for new object creation. Human judgment can be used to supplement class entry indices with side tables that provide secondary indices that support access based on natural keys. There is no need to actually access OBJECT-TYPES that correspond to table indices -- one would have to know them first to read them, and they cannot be changed. Therefore, their ACCESS clauses specify not-accessible. 2.10 MAPPING TO THE DEFVAL CLAUSE Use the DEFVAL clause to specify values according to the DEFAULT VALUE construct of the associated PACKAGE. Newnan Expires August, 1994 Page 42 DRAFT February, 1994 2.11 TRANSLATION OF ACTIONS 2.11.1 Procedure Translate each action-label encountered in a PACKAGE of a MANAGED OBJECT CLASS as if it were instead a sequence of two or more attribute-label's occurring at the end of an ATTRIBUTEs clause in the same PACKAGE. Do so even if such a clause does not actually exist. Where multiple ACTIONS are specified for a PACKAGE, evaluate them according to their order in the input text, i.e., as if there were several such multi-ATTRIBUTE sets appended to the ATTRIBUTES clause. Treat each ACTION with action-label as if it were a multi-ATTRIBUTE sequence, its members occurring in the following order with the following labels, ATTRIBUTE syntax and access properties. Status Label Syntax Access Property Manda || ActionTrigger GET-REPLACE tory "ActionTrigger" || ActionStatus GET "ActionStatus" Condi || CMIP GET-REPLACE tional "ActionInfoArg" ActionInfoArg || CMIP GET "ActionReply" ActionReply Table 7. Action syntax mapping. Transcribe the BEHAVIOUR information (if any) to the DESCRIPTION clause. Populate the ACTION construct rather than the ATTRIBUTE construct in the scannable REFERENCE clause. Otherwise, treat the pseudo-ATTRIBUTEs as if actually listed in an ATTRIBUTES construct. Enumerate the ActionTrigger and ActionStatus components for every mapped ACTION, observing the associated ActionTrigger and ActionStatus textual conventions (per Annex B.3). These jointly assure that a particular ACTION is serialized for a given class entry. Thus, a management station need not "poll" to determine when a (simulated) ACTION has completed. Also, two or more such stations can access a class entry in an orderly manner. The values ActionStatus can assume are: -2: inProgress. -1: noProblemDetected. Other non-negative: specificError. If the ACTION being emulated is confirmed, the value noProblemDetected indicates successful completion of the n- Newnan Expires August, 1994 Page 43 DRAFT February, 1994 1th operation, where the ActionTrigger is of current value n. If the ACTION being emulated is unconfirmed, this value (noProblemDetected) indicates no emulated ACTION is in progress, or the status of the last action is not known. Any other value (of ActionStatus) reflects the outcome emulating a confirmed ACTION for which a processingError has been detected and a single, non-negative status code returned. For other forms of processingError (non-integral or negative), human judgment is needed to map the outcome to SNMP. The values of ActionReply (if present) reflect the outcome of the last action successfully emulated for the class entry. Values associated with ActionInfoArg are only present if set by a management station. Prior to implementing a SetRequest-PDU for such objects, the agent tests whether intended values are logically consistent. If not, it returns error-status of badValue for SNMPv1 (what would be inconsistentValue for SNMPv2). Should such an attempted update fail, all objects related to ActionInfoArg shall retain prior values (if any). 2.11.2 Discussion There is subtle interplay between the CMIP protocol, the GDMO ACTION and PARAMETERS templates, and various CMIS errors in construing ISO/CCITT management syntax. The above mapping is succinct but requires the translator to understand the mapping of GDMO templates to CMIP. The SetRequest-PDU that triggers emulation of the action does not complete until emulation terminates. Meanwhile there is no need for the management station to try to poll for results. CMIS(P) errors that can arise with an action almost all map into the error-status fields returned for SetRequest-PDUs that set up and trigger the emulated action. No special status field is needed to carry these. The exception is the processingError, which is of syntax ANY DEFINED BY. This (default) mapping deals with the typical case where the exception is reported using non-negative integral syntax. Other cases require human judgment. Newnan Expires August, 1994 Page 44 DRAFT February, 1994 2.12 TRANSLATION OF NOTIFICATIONS 2.12.1 Procedure To translate a notification requires that there also be a corresponding (translated) log record class group. Furthermore, an instance of the log record must be created for each trap message emitted, since variables from the log record are used to populate the VarBind list of the trap. The log record class group may be defined in a pre-existing MIB module. Preferably, it should accompany the translated notification in the same MIB module. When packaging translated notifications and an associated log record group in the same module, insert the translated TRAP-TYPE macro(s) immediately preceding the class table. For each input subtree of NOTIFICATIONs to be translated, assign a corresponding output notification subtree. In Annex A, the example input notification subtree is smi2Notification and the example output notification subtree is smi2TranslatedNotifications. Create a TRAP-TYPE macro for each NOTIFICATION. Assign it the label || where is the label for the input NOTIFICATION template. In the example, processingErrorAlarm maps to smi2ProcessingErrorAlarm. Assign the ENTERPRISE clause the registry of the output notification subtree (e.g., smi2TranslatedNotifications). List in the VARIABLES clause: * The ManagedObjectInstance variable of the associated log record; and * Other objects of that log record that: * correspond to ATTRIBUTEs of the NOTIFICATION that are mandatory according to the input specification; * can not be multiply occurring for an instance of the log record; and * are not Complex or MultiComplex types. Specify the DESCRIPTION clause, as follows. * Transcribe the text from the NOTIFICATION's BEHAVIOUR construct (if any), stripped of delimiters. * Insert text stating "This notification carries information associated with a log Newnan Expires August, 1994 Page 45 DRAFT February, 1994 record. The VarBind list associated with this message may include the following additional information from that log record: ." where * is replaced by the label of the class table of the translated log record, e.g., smi2AlarmRecordTable. * is a comma-delimited list of all other accessible objects of the log record class group not already listed in the VARIABLES clause. In the REFERENCE clause, insert scannable syntax of the form: NOTIFICATION object-identifier [FIELD MAPS TO [, ]*]* [NOTES ] where the following applies. * The is the label of the associated NOTIFICATION template (e.g., processingErrorAlarm). * The object-identifier documents the ASN.1 registry of that template (e.g., {smi2Notification 10}). * The FIELD construct is specified once for each Notification field name label referenced in the corresponding MOCS. The one or more log record variables name the associated log record objects. The names of these variables must be known in the context of the surrounding MIB module, i.e., imported or defined therein. * Additional explanatory text () may follow the NOTES keyword. For the TRAP-TYPE macro value, assign the same relative arc number as that of the translated notification (e.g., arc 10 for processingErrorAlarm). The log record referenced in the VarBind list may be either: * Part of a set of translated logging objects, e.g., subordinate to a translated log object that is ultimately contained within root; or * A "pseudo log record" that does not have a Parent object, and exists only for purposes of reporting notifications. 2.12.2 Discussion Newnan Expires August, 1994 Page 46 DRAFT February, 1994 The mapping of the notification to variables of a log record serves multiple purposes. * It circumvents SNMPv1's message size constraint, since a management station can fetch the missing information if all does not fit in one message. * It saves inventing additional objects to report values in traps; log records will often be needed anyhow. * Since log records map to tables, that mapping allows multiply occurring or optional values to be reported. Those are not supported by the VARIABLES clause. The agent populates the VarBind list first with the values listed in the VARIABLES clause; then with other mandatory variables; then optionally with other values. The mandatory variables are as specified in the Management Object Conformance Statement (MOCS -- see section 6). When interpreting a MOCS, the relationship between translated objects and corresponding ATTRIBUTEs is determined by examining the scannable REFERENCE clauses for the columnar objects of the translated log record. When translating NOTIFICATIONs for previously translated log records, assign a naming prefix the same as when translating MANAGED OBJECT CLASSes. Use the ASN.1 IMPORT statement to import the relevant columns of the log record. The pseudo log record accommodates the native SNMP environment where ISO/CCITT logging constructs are not applicable. The (actual or pseudo) log record reported should be persistent enough so a manager requiring further information can retrieve it through "trap directed polling." One minute might be a reasonable minimum for the log record retention period. Whatever policy is used for log record retention should be documented in the AGENT-CAPABILITIES statement (discussed below). Use caution carrying over NOTIFICATIONs to Internet MIBs, since notifications are not popular with the Internet community. Consider the volume of messages that will be generated without full event forwarding discrimination. Also bear in mind that: * SNMPv2 does provide some event discrimination capability with its Party MIB; and * The optional omibtransSptTrapSuppressionTable specified in Annex B.1 provides a crude mechanism to selectively suppress traps, by trap type, for SNMPv1. Newnan Expires August, 1994 Page 47 DRAFT February, 1994 2.13 TRANSLATION OF DELETE OPERATIONS To simplify mechanized translation, RowStatus is provided for all class tables (and side tables). This is simpler than trying to determine which classes support manager- initiated create and delete operations (specified on a per NAME BINDING, not per MANAGED OBJECT CLASS, basis). Deletion is accomplished by setting RowStatus to "destroy". Successful deletion of a class instance automatically leads to deletion of associated side and child table rows. The operation succeeds or fails as a whole (e.g., if there are dependents and automatic deletion is not supported, then nothing is deleted). Instances of side table entries can be deleted if and only if that is allowed for the associated set valued ATTRIBUTEs or the syntax translated is OPTIONAL. 2.14 TRANSLATION OF CREATE OPERATIONS 2.14.1 Overview The creation (and deletion) rules for conceptual rows created according to this procedure conform to a subset (refinement) of the SNMPv2 RowStatus textual convention. That subset enforces consistency with OSI containment relationships, services and valid object states of OSI management. The RowStatus convention defines six possible status values (states) for a conceptual row: active, notInService, notReady, createAndGo, createAndWait and destroy. Three of these are visible to Get operations: active and notInService, which map to existing OSI managed objects, and notReady, which is a preparatory state during creation of a managed object. Statuses of createAndGo and createAndWait are transitory values used by Set operations, discussed further below. The fundamental principle for this subset of RowStatus usage is that all values of an instance of a class entry remain in a state consistent with OSI usage so long as RowStatus is active or notInService. This consistency constraint applies subsequent to every Set operation, although the operation may partially succeed (best efforts). If a Set operation is attempted that in any way violates OSI usage (NAME BINDINGs, containment, conditional PACKAGEs, etc.) error-status other than noError is returned (see below for further discussion of error-status). While OSI structural notions are translated to Internet MIB macro format where there is an analog, in many cases there Newnan Expires August, 1994 Page 48 DRAFT February, 1994 is no equivalent, e.g., NAME BINDINGs and PACKAGEs. No attempt is made to define alternative notation in such cases other than to document the mapping in the scannable REFERENCE clause. The source GDMO specification is the ultimate authority determining valid state of translated objects, their attributes and relationships. 2.14.2 Status of notInService Status of notInService is only supported if the corresponding OSI resource is governed by an administrativeState ATTRIBUTE that supports a value of "locked". The notInService status is functionally equivalent to locked, while active status equates to unlocked (or created without administrativeState). An instance of a class entry can have its administrativeState locked or unlocked either by setting the administrativeState column directly or by switching RowStatus between active and notInService. The transitory administrativeState of "shutting down" is reflected in a RowStatus of active until it completes, at which point RowStatus becomes notInService. In this case, a response to the setting the administrative state variable is not returned until the resource is shut down. The same is true if RowStatus is directly set. 2.14.3 Status of notReady A conceptual row having RowStatus of notReady is not yet created with respect to OSI usage and consistency checking is not yet applied to columnar objects of that entry. It is impossible for an badValue error-status to arise when manipulating a row with this status, since there is no enforcement of integrity constraints. However, once a row achieves an active or notInService status, it cannot return to notReady unless first destroyed and recreated. 2.14.4 Row Creation A prerequisite to create an instance of a class entry is that the conceptual row's parent column points to an existing instance of a superior class entry for which there is a valid NAME BINDING. In the event there is ambiguity about which NAME BINDING to use, the row of the omibtransSptNameBindingTable corresponding to the row to be created must be set using the OBJECT IDENTIFIER of the NAME BINDING to be used. That must Newnan Expires August, 1994 Page 49 DRAFT February, 1994 be accomplished using the same SetRequest operation that creates the row. A class instance must be created (first set to active or notInService) in a single operation resulting in a state consistent with OSI usage. This is accomplished using a single Set operation without setup, or by staging information in notReady status and then creating the instance. Creation is ordinarily accomplished by setting class entry RowStatus to createAndGo, resulting in active status. For a class having administrativeState, this can alternatively be done by setting RowStatus to createAndWait, resulting in a new instance in locked state. In either case, values for conditional PACKAGEs that need to be present must be populated when the instance is activated. Side table instances cannot "be created" before corresponding class entries are created, although they may be staged in notReady status. The omibtransSptTableIndexTable (see Annex B) provides a convenient mechanism for agent to supply manager with an index to create a new conceptual row. The index returned is unique to the table in question and allows the agent (optionally) to implement index assignment policies (e.g., FIFO or small number) on a per table basis. Implementation of that table is discretionary. Any valid option specified by the RowStatus textual convention may be used. 2.14.5 ANY DEFINED BY Syntax The handling of an ATTRIBUTE value is similar to other handling of side tables. However, the entry to be created will hardly ever have a corresponding entry in its class table, since it is logically equivalent to an object (the ANY DEFINED by pointer) which is typically in another object group. Therefore, allocate "phantom" index values for superior tables such as the class table -- in addition to the TableIndex of the side table -- when creating such entries. The phantom indexes are prepended to the table's own index to arrive at the subidentifier for the ATTRIBUTE syntax. The agent permits creation of such side table entries so long as their syntax is permissible in the context of the AnyDefinedBy object that points to them. For ANY tables, assign a TableIndex for the tables using normal procedures. Concatenate that value following the InstancePointer of the superior entry to arrive at the complete index of a particular entry. Newnan Expires August, 1994 Page 50 DRAFT February, 1994 The agent enforces that syntax pointed by an AnyDefinedBy pointer is consistent with the rest of the class entry, the same as for a regular side table entry. Deleting an AnyDefinedBy object (where permitted) has the side effect of deleting the entry pointed to as well as subordinate entries, and de-allocating their indexes. Such deletion is not permitted unless the class entry will remain internally consistent. Deletion of an ANY table entry implicitly de- allocates not only the TableIndex for that entry but also the associated phantom indexes. Attempting to delete an entry pointed to by an AnyDefinedBy pointer by setting RowStatus to destroy is the same as attempting deletion of the pointer itself. If the operation succeeds, the pointer is implicitly deleted. 2.14.6 Discussion To support creation of class instances complicates matters considerably, since the manager and its users must understand the underlying OSI constructs. This may not always be appropriate for native SNMP implementations, in which case a subset can be implemented that does not support create/delete. To create an object mapping into the ISO/CCITT world requires that its parent be known, hence the parent table. A child table is also provided to allow general navigation of the MIB tree. The name binding table is necessary under some circumstances to determine the OBJECT IDENTIFIER associated with each parent/child binding. Newnan Expires August, 1994 Page 51 DRAFT February, 1994 3. CONSTRAINTS ON SNMPV1 PROTOCOL USAGE 3.1 APPROACH The following assumptions about use of SNMPv1 protocol are made to facilitate MIB translation. * The management station shall expect that conditional attributes may not be present on a per conceptual row basis and shall act appropriately, e.g., use Get-Next Request to test for presence. * The management station shall expect that access actually granted may be less than that stated in the ACCESS clause due to dynamic access controls. * As discussed above, Set operations on RowStatus and associated objects are constrained to leave the object in a state consistent with OSI usage. Among other things, that means that multiple columns having consistency dependencies must jointly be updated in a single operation when the class entry has active or outOfService status. Mapping of OSI functionality also requires refinements to use of error-status as documented as follows. Newnan Expires August, 1994 Page 52 DRAFT February, 1994 badValue Customary usage, and may be returned due to a set request that is contrary to the translated object's PERMITTED VALUEs, or would violate integrity of the class entry overall. This is used where SNMPv2 would return inconsistentValue, wrongType, wrongLength, wrongEncoding or wrongValue. genErr Customary "none-of-the above" usage, e.g., is returned where SNMPv2 would return genErr, resourceUnavailable, commitFailed or undoFailed. noError No constraints. noSuchName Customary usage, and * is returned when attempt is made to access an object for which read access is denied due to access control. In that case, the object is "invisible." * is returned in cases where the SNMPv2 would return inconsistentName, noAccess, noCreation, authorizationError, notWritable, noSuchInstance or noSuchObject. tooBig No constraints. Table 8. SNMPv1 error mapping. 3.2 DISCUSSION Clarification of SNMPv1 error-status usage is necessary to map functionality not supported by that protocol. Thus an off-the-shelf manager should be able to interoperate with an agent that implements a translated MIB but usage of the PDUs will not be entirely conventional. Newnan Expires August, 1994 Page 53 DRAFT February, 1994 4. SNMPV2 TRANSLATION PROCEDURES 4.1 GENERAL APPROACH RFC 1452 [19] provides succinct guidelines for converting (translating) SNMPv1 MIBs to SNMPv2. This section cites applicable rules from that RFC, also specifying additional procedures, as a concise means to express the difference between translated SNMPv1 and SNMPv2 MIBs. However, this is merely an editorial convenience. In practice a translator is unlikely to translate from GDMO to SNMPv1 and then translate that output to SNMPv2. Indeed, translation to either SNMP framework requires deep knowledge of the original GDMO MIB. Translation is best conceived of as a single input, dual output process. 4.2 OBJECT DEFINITIONS 4.2.1 Selected Procedures from RFC 1452 The following rules, quoted from [19], are relevant to translation of SNMPv2 MIBs. (Rules which have been omitted are not relevant to translated MIBs.) "... Conversion of a MIB module does not require the deprecation of the objects contained therein. Only if the semantics of an object truly changes should deprecation be performed. (1) The IMPORTS statement must reference SNMPv2-SMI, instead of RFC1155-SMI and RFC-1212. (2) The MODULE-IDENTITY macro must be invoked immediately after any IMPORTs or EXPORTs statement... (4) For any object with an integer-valued SYNTAX clause, in which the corresponding INTEGER does not have a range restriction (i.e., the INTEGER has neither a defined set of named-number enumerations nor an assignment of lower- and upper-bounds on its value), the object must have the value of its SYNTAX clause changed to Integer32... (6) For any object with a SYNTAX clause value of Counter, the object must have the value of its SYNTAX clause changed to Counter32. Newnan Expires August, 1994 Page 54 DRAFT February, 1994 (7) For any object with a SYNTAX clause value of Gauge, the object must have the value of its SYNTAX clause changed to Gauge32. (8) For all objects, the ACCESS clause must be replaced by a MAX-ACCESS clause. The value of the MAX-ACCESS clause is the same as that of the ACCESS clause unless some other value makes "protocol sense" as the maximal level of access for the object... (10) For all objects, if the value of the STATUS clause is "mandatory", the value must be replaced with "current". (11) For all objects, if the value of the STATUS clause is "optional", the value must be replaced with "obsolete". (12) For any object not containing a DESCRIPTION clause, the object must have a DESCRIPTION clause defined... Other changes are desirable, but not necessary... (2) For any object with a string-valued SYNTAX clause, in which the corresponding OCTET STRING does not have a size restriction (i.e., the OCTET STRING has no assignment of lower- and upper-bounds on its length), one might consider defining the bounds for the size of the object..." 4.2.2 Additional Procedures Translated MIBs must also import objects from SNMPv2-TC and SNMPv2-CONF. For a full translation, register the resulting ASN.1 module as: "{ 2 }" and name it: "MIB" || || "SNMPv2", e.g., MIBsmi2SNMPv2 labeling the MODULE-IDENTITY macro: "mib" || || "SNMPv2". For a partial translation, register the resulting ASN.1 module as: "{ 2 }" and name the resulting module: "MIB" || || "SNMPv2Increment" || labeling the MODULE-IDENTITY macro: Newnan Expires August, 1994 Page 55 DRAFT February, 1994 "mib" || || "SNMPv2Increment" || " where the least translated arc number is the lowest relative arc number corresponding to any object translated. If no object is translated, the must be assigned manually to avoid possible collision. Most values for the MODULE-IDENTITY clauses must be populated manually. However, a mechanized translator should generate skeletal text sufficient to compile. The value of the LAST-UPDATED clause, the macro's Label and OBJECT- IDENTIFIER can be automatically generated. The value of that macro production equals the registry of the generated SNMPv2 ASN.1 module, i.e., { 2 }. Populate the UNITS clause where applicable. The text included in SNMPv1 DESCRIPTION clauses that documents such SNMPv2 constructs need not be carried over to SNMPv2 modules. Generate an INTEGER type if there are named values (map enumerated values into named values) or if subtyping information is available, carrying over the values and subtypes. Otherwise, use Integer32. Objects with read-write ACCESS for SNMPv1 shall have read- create MAX-ACCESS for SNMPv2. In cases where entries of a side table are in one-to-one correspondence with those of its superior table (having no TableIndex of its own) use the AUGMENTS clause pointing to the superior table in lieu of an INDEX clause. In the DESCRIPTION clause, use the term NOTIFICATION-TYPE rather than TRAP-TYPE. 4.2.3 Discussion While at any point there may not be a known NAME BINDING that would allow a create operation, it is always possible that a future binding will so allow. Unless it is clearly impossible for a class entry ever to be instantiated by a create operation, specify read-create. Information about UNITS can optionally be picked up in a manual post-processing phase, by examining BEHAVIOR clauses of mapped ATTRIBUTES and PACKAGEs. Proprietary extensions can be accommodated by referencing a table of a class group using AUGMENTS clause to index an "extension table". This is preferable to translating a proprietary class that is allomorphic to the translated class, as that would result in a class group having entirely Newnan Expires August, 1994 Page 56 DRAFT February, 1994 different registration for its objects. This also holds for SNMPv1, although the dependency can only be reflected in the indexing structure, since SNMPv1 does not support the AUGMENTS clause. 4.3 TRAP DEFINITIONS 4.3.1 RFC 1452 Procedure The following rules, quoted from [19], are relevant to translation of SNMPv2 MIBs. (Rules which have been omitted are not relevant to translated MIBs.) "If a MIB module is changed to conform to the SNMPv2 framework, then each occurrence of the TRAP-TYPE macro must be changed to a corresponding invocation of the NOTIFICATION-TYPE macro. (1) The IMPORTS statement must not reference RFC-1215. (2) The ENTERPRISES clause must be removed. (3) The VARIABLES clause must be renamed to the OBJECTS clause. (4) The STATUS clause must be added. Procedure: STATUS is always current. (5) The value of an invocation of the NOTIFICATION-TYPE macro is an OBJECT IDENTIFIER, not an INTEGER, and must be changed accordingly." 4.3.2 Additional Procedures The NOTIFICATION-TYPE value is generated by concatenating the value that is provided for SNMPv1 by the ENTERPRISES clause with the INTEGER value assigned to that TRAP-TYPE. For example, a TRAP-TYPE with the value 10 and ENTERPRISES clause of smi2TranslatedNotifications corresponds to an SNMPv2 NOTIFICATION-TYPE of value {smi2TranslatedNotifications 10}. Newnan Expires August, 1994 Page 57 DRAFT February, 1994 5. CONSTRAINTS ON SNMPV2 PROTOCOL USAGE 5.1 PROCEDURE As with SNMPv1, SNMPv2 Set operations on RowStatus and associated objects are constrained to leave the object in a state consistent with OSI usage. Among other things, that means that multiple columns having consistency dependencies must jointly be updated in a single operation when RowStatus has status of active or outOfService. Newnan Expires August, 1994 Page 58 DRAFT February, 1994 The following table reflects error-status usage for SNMPv2. authorizationError No constraints. badValue Does not arise. commitFailed No constraints. Note that class instance is still left in consistent state. genErr No constraints. inconsistentName No constraints. inconsistentValue Consistency is enforced across a class instance, and may apply to the presence or absence of row entries, as well as their values. noAccess No constraints. noCreation Will be returned if there is no NAME BINDING permitting row creation. noError No constraints, except that certain conditions are interpreted as errors that would not otherwise be. noSuchName Does not arise. notWritable No constraints. readOnly Does not arise. resourceUnavailable No constraints. tooBig No constraints. undoFailed Does not arise for translated MIBs. The class instance is always left in a consistent state. wrongEncoding No constraints. wrongLength No constraints. wrongType No constraints. wrongValue No constraints. Table 9. SNMPv2 error mapping. Newnan Expires August, 1994 Page 59 DRAFT February, 1994 Attributes and objects for which read access is denied due to access control remain invisible. However, that is reflected by returning noSuchInstance in the VarBind rather than error-status of noSuchName. 5.2 DISCUSSION The added capabilities of the SNMPv2 protocol allow most constraints required for translation to SNMPv1 to be relaxed. Existence of the authorizationError value avoids the contrived use of readOnly to signal access control violation. The codes for authorizationError and inconsistentValue provide straightforward solutions to the major problems encountered with SNMPv1 usage. Newnan Expires August, 1994 Page 60 DRAFT February, 1994 6. STATEMENTS OF COMPLIANCE AND CONFORMANCE This section prescribes how SNMPv2 OBJECT-GROUP, MODULE- COMPLIANCE and AGENT-CAPABILITIES macros [18] shall be used in conjunction with MIB modules generated according to this specification. It also describes how the ISO/CCITT specified Management Object Conformance Statement (MOCS) [9] Proforma shall be used in conjunction with those SNMP macros. Throughout this section, use of the term "translate" means application of procedures specified herein to create SNMPv1 or SNMPv2 output specifications given input GDMO specification(s). 6.1 MAPPING OF THE OBJECT-GROUP MACRO Provide one OBJECT-GROUP macro for each MANAGED OBJECT CLASS mapped to SNMPv2. Assign this, the class group, the same ASN.1 label as that of the input MANAGED OBJECT CLASS. In the OBJECTS clause, list all accessible object-types enumerated for that class group. Identify STATUS as current. In the DESCRIPTION clause, name the translated MANAGED OBJECT CLASS, state that it is translated according to the procedures set forth in this specification, and observe that added detail can be found in the class table description. Populate the REFERENCE clause as specified in section 2.8. Insert the OBJECT-GROUP macro for a class group so it appears immediately preceding the associated class table in the output MIB. If the class table corresponds to a log record, insert the corresponding TRAP-TYPE or NOTIFICATION- TYPE macro(s) following the OBJECT-GROUP macro but preceding the class table definition. Insert an OBJECT-GROUP macro right before each ANY group. Assign this the same label as the corresponding ASN.1 type reference, except with its first letter demoted to lower case. In the OBJECTS clause, list all accessible object- types within the ANY group. Identify STATUS as current. In the DESCRIPTION clause, name the translated ASN.1 type reference and state that it is translated according to the procedures set forth in this specification. Populate the FIELD construct of the associated scannable REFERENCE clause with the ASN.1 type reference. Also, using the associated REGISTERED AS construct, provide the OBJECT IDENTIFIER that discriminates this particular ANY DEFINED BY option. Newnan Expires August, 1994 Page 61 DRAFT February, 1994 Include OBJECT-GROUP macros for SNMPv1 outputs the same as for SNMPv2, except expressed as a series of ASN.1 comments, i.e., prefix to each line of the macro a double hyphen ("-- "). Do not insert any other comments between the lines corresponding to the OBJECT-GROUP macro. Do not provide OBJECT-GROUP macros for stand-alone modules that contain only translated notifications. Document the dependency of such mapped notifications on associated log records using the MODULE-COMPLIANCE macro. 6.2 MAPPING OF THE MODULE-COMPLIANCE MACRO 6.2.1 General Procedure For every input subtree translated to SNMPv1 and/or SNMPv2, provide one companion SNMPv2 information module containing a MODULE-COMPLIANCE macro. For a full translation: * register the Compliance ASN.1 module as: "{ 0 0 }" e.g., { smi2TranslatedModules 0 0 } naming it: "MIB" || || "Compliance", e.g., MIBsmi2Compliance; * register the MODULE-IDENTITY macro as: "{ 0 0 }" e.g., { smi2TranslatedModules 0 0 } naming it: "mib" || || "Compliance" e.g., mibsmi2Compliance; and * register the MODULE-COMPLIANCE macro as: "{ 0 1 }" e.g., { smi2TranslatedModules 0 1 } naming it: "mib" || || "ComplianceStatement" e.g., mibsmi2ComplianceStatement. For a partial translation, append the qualifiers "Increment" and to all of the above, as previously described for module registration in Section 2 (e.g., the macro named mibsmi2ComplianceStatementIncrement1 is registered as { smi2TranslatedModules 0 1 1 }). Newnan Expires August, 1994 Page 62 DRAFT February, 1994 Populate the MODULE-IDENTITY macro with appropriate values for the LAST-UPDATED, ORGANIZATION, CONTACT-INFO and DESCRIPTION clauses. In the MODULE-COMPLIANCE macro, specify one MODULE clause for the SNMPv1 translation, if provided, and one for the SNMPv2 translation, if provided. Do not specify MANDATORY- GROUPS. Specify the GROUPS clause only if a group is conditionally mandatory or if its usage is refined by SYNTAX, WRITE-SYNTAX or MIN-ACCESS clauses. If there is an existence dependency, cite normative text for the associated MANAGED OBJECT CLASS that describes the dependency. When referencing both SNMPv1 and SNMPv2 translated modules, list identical GROUPS (if any) for both MODULE clauses. Do not restate existence dependencies. Instead, assert that usage is identical for both SNMP frameworks. A MODULE-COMPLIANCE macro referencing an SNMPv1 module is interpreted as if an SNMPv2 OBJECT-GROUP macro were defined for each class group according to the (Mapping Of The OBJECT-GROUP Macro) procedures above. Thus when both SNMPv1 and SNMPv2 modules are generated using the same inputs their GROUPS clauses (if present) reference the same labels and OBJECT IDENTIFIERs. OBJECT, SYNTAX, WRITE-SYNTAX and/or MIN-ACCESS clauses may be specified. In such cases, justification must be provided in associated DESCRIPTION clauses. Such usage is restricted to refinements -- rather than exceptions -- to underlying constructs. As expected, the OBJECT-GROUP is the unit of implementation. Contrary to SNMP custom, presence or absence of conceptual columns may vary from conceptual row to conceptual row depending on certain underlying OSI constructs (conditional PACKAGEs and the syntactical types ANY DEFINED BY, OPTIONAL and CHOICE). Text for the DESCRIPTION clause shall consist of a completed Translation Compliance Proforma as specified below. The translator shall substitute appropriate text for embedded strings delimited by square brackets ("[]"). Any additional text provided in the value of this clause shall be external to the keywords BEGINPARSE and ENDPARSE. This specification does not mandate the form in which the OBJECT IDENTIFIERs shared across common translated modules shall be specified. One approach is to specify a value reference for the output subtree in the compliance module, importing that value into the translated MIB module(s). Newnan Expires August, 1994 Page 63 DRAFT February, 1994 6.2.2 Translation Compliance Proforma 6.2.2.1 Proforma Overview The DESCRIPTION clause of the MODULE-COMPLIANCE macro documents compliance of SNMP translated MANAGED OBJECT CLASSes to the translation procedures of this document. As such, it requires that the reader be familiar with terms and conventions of that document. The clause has two purposes: * To document inputs to the translation process; and * To document exceptions to the translation procedures (if any) that have been made based on the judgment of the human translator. Enter "Not applicable." for those cases where human judgment was not required. Exceptions to the translation procedures may be made by the translator in the following cases. * If, in the translator's judgment, a literal application of the translation procedures would result in an output MIB specification too complex to be acceptable. * If the stated translation procedures can not accommodate the range of permitted values required by the base specification (e.g., if mapping PrintableString to the alphabet and length restriction of DisplayString is not acceptable). * If collisions (duplicates) in naming or value would result that would render the output specification ambiguous or invalid. Exceptions may be made concerning syntax or semantics. However, every ACTION, ATTRIBUTE and NOTIFICATION associated with a translated MANAGED OBJECT CLASS must be mapped to corresponding construct(s) in the output MIB(s). This clause shall document only deviations from (not refinements to) the normal outcome of the stated translation procedures. The other clauses of this macro accommodate such refinements. This clause shall document deviations in semantics as well as in syntax. 6.2.2.2 Proforma Text BEGINPARSE I. INPUTS TO THE TRANSLATION PROCESS The input class subtree and output class subtree for this module are: [Enter subtrees here as applicable.] The associated input and output notification subtrees for this module are: Newnan Expires August, 1994 Page 64 DRAFT February, 1994 [Enter subtrees here as applicable.] The associated input and output module subtrees for this module are: [Enter subtrees here as applicable.] The associated input and output ANY discriminator subtrees for this module are: [Enter subtrees here as applicable.] The document(s) providing input specifications for the translated module(s) are: [Enter names and OBJECT IDENTIFIERS of those documents here.] The used to generate the translated module(s) is: [Enter naming prefix here.] II. EXCEPTIONS TO THE TRANSLATION PROCEDURES Following are the cases where a 'natural key' is substituted for the default (arbitrary integer index): [Name the affected tables and their natural keys here.] Following are cases for which output syntax differs from the specified mapping for the input syntax: [Name the (labels of the) input syntaxes here and describe the alternative syntaxes using ASN.1 notation. Express revised syntax in terms of alternative input syntaxes, i.e., as if different syntax had been specified for the input MIB.] Example: ATTRIBUTE x is treated as if it had a syntax of DisplayString rather than a choice of NULL or PrintableString. Substitute an empty string where a CHOICE of NULL would otherwise be required. Following are cases for which the translation procedure can not accommodate values permitted by the base specification. [Name the (labels of the) input syntaxes here, and specify alternate syntaxes and their interpretation.] Following are cases in which the translation procedure would result in duplicated labels: [Name the labels that would result from the translation procedure and the alternative labels that are used.] Human judgment has identified that the following ANY DEFINED BY constructs each resolve to a single option and are Newnan Expires August, 1994 Page 65 DRAFT February, 1994 treated as if that syntactical option were referenced directly: [Identify any such constructs here, supplying rationale.] Following are cases for which the specified translation procedure would result in duplicated values (e.g., for named INTEGER types), and the alternative values used: [Name the labels of those values; the values that would result from the normal translation procedure; and the alternative values to be used. Following are other ways in which the translated MIB module does not comply with stated procedures. [Document deviations and their justifications here.] ENDPARSE 6.3 MAPPING OF THE AGENT-CAPABILITIES MACRO The agent capabilities statement, supplied by the implementor, documents the conforming implementation -- not the translated MIB module that is conformed to. A translator may supply a skeleton AGENT-CAPABILITIES macro to be completed by the implementor. When completed by the implementor, this statement includes the following information: * SUPPORTS clause(s) shall be present stating all translated MIBs to which conformance is claimed. * INCLUDES clause(s) shall be present, listing all MIB groups (and thus MANAGED OBJECT CLASSes) supported. The statement may include the following information: * The CREATION-REQUIRES, DEFVAL, VARIATION, SYNTAX, WRITE-SYNTAX and ACCESS clauses may be present so long as values specified are consistent with OSI usage. * This (agent capabilities) statement may reference non- translated as well as translated MIBs. Compliance with this specification in no way constrains usage or lack thereof of AGENT-CAPABILITIES clauses for non- translated object groups. 6.4 MAPPING OF THE MANAGEMENT OBJECT CONFORMANCE STATEMENT (MOCS) An OSI MOCS [9] is not translated. Rather, it is interpreted with respect to a translated MIB as follows: * OSI constructs are treated as synonyms for corresponding generated OBJECT-TYPEs and TRAP-TYPEs or NOTIFICATIONs. Newnan Expires August, 1994 Page 66 DRAFT February, 1994 * The class group label is the same as the managed object class template label, being the same thing for different protocols. * An attribute template label corresponds to all the OBJECT-TYPEs within the class group that name that label in scannable ATTRIBUTE constructs within their REFERENCE clauses. * An action template label corresponds to all OBJECT-TYPEs in the class group that name that label in scannable ACTION constructs within their REFERENCE clauses. * Action field name labels correspond to all OBJECT- TYPEs in the class group that name the label of action in question within their scannable REFERENCE clauses while providing a name equal to the action field name in the TYPES construct of the same clause. * A PARAMETERS label corresponds to all OBJECT-TYPEs in the class group that name that label in the scannable PARAMETER construct in their REFERENCE clauses. * NAME BINDINGs are not translated, rather, are the same as for OSI specifications. The superior object class template label referenced in the pro forma is interpreted as the name of the superior class group to which the subordinate class group may be bound. * An ATTRIBUTE is an atomic unit of implementation, i.e., if any OBJECT-TYPE corresponding to an ATTRIBUTE is implemented, than all shall be. * The following columns of the MOCS do not pertain to translated MIBs, need not be filled out for purposes of conformance to translated MIBs, and shall be ignored with regard to SNMP interpretation if provided: * SetToDefault, * ATTRIBUTE GROUP, and * Any OBJECT (type) IDENTIFIER associated with a GDMO template label. These are only necessary in the rare case there is ambiguity (i.e., templates have identical labels). However, if present, these values shall reflect the input ISO/CCITT MIB, rather than any generated values. Newnan Expires August, 1994 Page 67 DRAFT February, 1994 7. COMPLIANCE AND CONFORMANCE This section defines requirements which an implementation of these MIB translation procedures must satisfy in order to comply with this specification. Throughout the section, references to sections and subsections shall be understood to refer to parts of this specification. Likewise, use of the term "translate" shall be understood to mean application of procedures specified herein to create SNMPv1 or SNMPv2 output specifications based upon input GDMO specification(s). 7.1 COMPLIANCE This subsection includes: * Directives pertaining to all translated modules. * Directives pertaining to just SNMPv1. * Directives pertaining to just SNMPv2. 7.1.1 All Translated MIB Modules Every translated MIB module shall include one OBJECT-GROUP macro per class table, and additional OBJECT-GROUP macros as needed, in compliance with subsection 6.1. This macro shall be in the form of ASN.1 comments for SNMPv1 modules and be in standard form for SNMPv2. For each input module translated there shall be produced a single accompanying MODULE-COMPLIANCE module in accordance with subsection 6.2. This MODULE-COMPLIANCE module shall apply to both SNMPv1 and/or SNMPv2 outputs(s) that correspond to the input GDMO module. Each translated module shall comply with the syntactical requirements of the applicable SNMP Structure of Management Information specification(s) and associated specifications [10, 12, 16]. 7.1.2 SNMPv1 Translated MIB Modules SNMPv1 translated modules claiming compliance to this specification shall: (a) Be named and registered in accordance with subsection 2.2. (b) Have output TRAP-TYPE macros corresponding to any input NOTIFICATIONs in compliance with subsection 2.12. Newnan Expires August, 1994 Page 68 DRAFT February, 1994 (c) Have OBJECT-TYPE macros: * As are required due to translation of MANAGED OBJECT CLASS, ACTION or NOTIFICATION templates; * That are labeled according to subsection 2.4; * That carry over OSI semantics in their DESCRIPTION and REFERENCE clauses per subsections 2.7 and 2.8 (respectively); and * That otherwise have their (SNMP macro) clauses populated according to Section 2. 7.1.3 SNMPv2 Translated MIB Modules SNMPv2 translated modules claiming compliance to this specification shall comply with the requirements stated in sections 2, 3, 4 and 5. Where there is discrepancy, sections 4 and 5 take precedence over sections 2 and 3. 7.2 CONFORMANCE This subsection defines requirements which an implementation of a translated MIB must satisfy in order to claim conformance to that MIB. An implementation claiming conformance to translated MIBs or constituent objects shall be accompanied by an SNMPv2 AGENT- CAPABILITIES statement. Interpretation of that statement for SNMPv1 is the same as for SNMPv2 except any associated ACCESS clauses are understood to correspond to the associated SNMPv1 ACCESS (rather than MAX-ACCESS) clause, for which the read-create value shall not be specified. The agent capabilities statement shall be accompanied by a completed Management Object Conformance Statement (MOCS), as defined by [9], for each translated class group. An implementor may not claim conformance to the informative macros or types illustrated in Annex A. Should there be inconsistencies between documents regarding conformance to OSI usage, documents shall be consulted in the following (descending) order of precedence to resolve them: * Base standards, * Input MIB specifications, * Proforma specifier's MOCS, * Output MIB specifications and MODULE-COMPLIANCE statements, * Information supplier's MOCS, and * Agent capabilities statements. Newnan Expires August, 1994 Page 69 DRAFT February, 1994 An implementor encountering any ambiguity in this specification regarding behavior of translated objects shall make the implementation as consistent with OSI usage as possible. Such action shall be documented in appropriate VARIATION clauses. The MOCS proformas shall be accompanied by a Management Conformance Summary (MCS), as specified by [9], if the implementation has multi-stack support that includes CMIP. If the MCS is not provided, similar information should be provided in the overall DESCRIPTION clause of the agent capabilities statement. An implementation must conform/comply with relevant components of IIMComibtransConventions, IIMComibtransSptSNMPv1, and/or IIMComibtransSptSNMPv2 modules, as follows. * An implementation must comply with any textual conventions specified by IIMComibtransConventions and used by the translated MIB. * An implementation must comply with all mandatory object groups specified by these modules. * An implementation may choose to comply with any optional object groups specified by these modules. If any of these statements apply, then the appropriate Annex B module(s) shall be referenced by the SUPPORTS clause of the agent capabilities macro, and one or more of these requirements shall be stated in the DESCRIPTION clause. Newnan Expires August, 1994 Page 70 DRAFT February, 1994 ANNEX A (INFORMATIVE): DEFINITION OF MANAGEMENT INFORMATION (DMI) EXAMPLE A.1 INPUT ISO/CCITT MANAGEMENT INFORMATION BASE -- ISO Definition of Management Information - DMI -- REFERENCE "Rec. X.721 | ISO/IEC 10165-2 : 1992" -- The following GMDO templates and ASN.1 modules have been -- abbreviated to include only those definitions which are -- needed for the example partial translation of DMI. -- Specifically, only those templates and ASN.1 definitions -- which relate to the alarmRecord and processingErrorAlarm -- have been retained. The discriminatorConstruct attribute -- has also been included. -- Managed Object Classes alarmRecord MANAGED OBJECT CLASS DERIVED FROM eventLogRecord; CHARACTERIZED BY -- The appropriate object identifier values for the -- eventType attribute, inherited from eventLogRecord -- managed object class are communicationAlarm, -- qualityofServiceAlarm, processingErrorAlarm, -- equipmentAlarm and environmentalAlarm alarmRecordPackage PACKAGE BEHAVIOUR alarmRecordBehaviour BEHAVIOUR DEFINED AS "This managed object is used to represent logged information that resulted from alarm notifications or event reports";; ATTRIBUTES probableCause GET, perceivedSeverity GET;;; CONDITIONAL PACKAGES specificProblemsPackage PACKAGE ATTRIBUTES specificProblems GET; REGISTERED AS {smi2Package 1}; PRESENT IF "the Specific problems parameter is present in the alarm notification or event report corresponding to the instance of alarm record", backedUpStatusPackage PACKAGE ATTRIBUTES backedUpStatus GET; REGISTERED AS {smi2Package 2}; PRESENT IF "the backedUpStatus attribute has a value TRUE and the Backed up status parameter is present in Newnan Expires August, 1994 Page A-1 DRAFT February, 1994 the alarm notification or event report corresponding to the instance of alarm record", backUpObjectPackage PACKAGE ATTRIBUTES backUpObject GET; REGISTERED AS {smi2Package 3}; PRESENT IF "Backup object parameter is present in the alarm notification or event report corresponding to the instance of alarm record", trendIndicationPackage PACKAGE ATTRIBUTES trendIndication GET; REGISTERED AS {smi2Package 4}; PRESENT IF "the Trend indication parameter is present in the alarm notification or event report corresponding to the instance of alarm record", thresholdInfoPackage PACKAGE ATTRIBUTES thresholdInfo GET; REGISTERED AS {smi2Package 5}; PRESENT IF "the value for probableCause attribute is thresholdCrossed", stateChangeDefinitionPackage PACKAGE ATTRIBUTES stateChangeDefinition GET; REGISTERED AS {smi2Package 6}; PRESENT IF "there is a state transition for the states defined in State Management Function, corresponding to the alarm type specified in the alarm record", monitoredAttributesPackage PACKAGE ATTRIBUTES monitoredAttributes GET; REGISTERED AS {smi2Package 7}; PRESENT IF "the monitoredAttributes parameter is present in the alarm notification or event report corresponding to the instance of alarm record", proposedRepairActionsPackage PACKAGE ATTRIBUTES proposedRepairActions GET; REGISTERED AS {smi2Package 8}; PRESENT IF "the proposedRepairActions parameter is present in the alarm notification or event report corresponding to the instance of alarm record"; REGISTERED AS { smi2MObjectClass 1 }; eventLogRecord MANAGED OBJECT CLASS DERIVED FROM logRecord; CHARACTERIZED BY eventLogRecordPackage PACKAGE BEHAVIOUR eventLogRecordBehaviour BEHAVIOUR DEFINED AS "This managed object represents the information stored in the log as a result of Newnan Expires August, 1994 Page A-2 DRAFT February, 1994 receiving notifications or incoming event reports . ";; ATTRIBUTES managedObjectClass GET, managedObjectInstance GET, eventType GET;;; CONDITIONAL PACKAGES eventTimePackage PACKAGE ATTRIBUTES eventTime GET; REGISTERED AS {smi2Package 11}; PRESENT IF "the event time parameter was present in the received event report", notificationIdentifierPackage PRESENT IF "the notification Identifier parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses", correlatedNotificationsPackage PRESENT IF "the correlatedNotifications parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses ", additionalTextPackage PRESENT IF "the Additional text parameter is present in the notification or report corresponding to the instance of event record or an instance of its subclasses", additionalInformationPackage PRESENT IF "the Additional information parameter is present in the notification or report corresponding to the instance of event record or an instance of its subclasses"; REGISTERED AS { smi2MObjectClass 5 }; logRecord MANAGED OBJECT CLASS DERIVED FROM top; CHARACTERIZED BY logRecordPackage PACKAGE BEHAVIOUR logRecordBehaviour BEHAVIOUR DEFINED AS "This managed object represents the information stored in the logs";; ATTRIBUTES logRecordId GET, loggingTime GET;;; REGISTERED AS { smi2MObjectClass 7 }; top MANAGED OBJECT CLASS CHARACTERIZED BY topPackage PACKAGE BEHAVIOUR topBehaviour BEHAVIOUR Newnan Expires August, 1994 Page A-3 DRAFT February, 1994 DEFINED AS "This is the top level of managed object class hierarchy and every other managed object class is a specialization of either this generic class (top) or a specialization of subclass of top. The parameter miscellaneousError is to be used when a processing failure has occurred and the error condition encountered does not match any of object's defined specific error types.";; ATTRIBUTES objectClass GET, nameBinding GET ;;; CONDITIONAL PACKAGES packagesPackage PACKAGE ATTRIBUTES packages GET; REGISTERED AS {smi2Package 16}; PRESENT IF "any registered package, other than this package has been instantiated", allomorphicPackage PACKAGE ATTRIBUTES allomorphs GET; REGISTERED AS {smi2Package 17}; PRESENT IF " if an object supports allomorphism" ; REGISTERED AS { smi2MObjectClass 14}; -- Name Bindings logRecord-log NAME BINDING SUBORDINATE OBJECT CLASS logRecord AND SUBCLASSES; NAMED BY SUPERIOR OBJECT CLASS log AND SUBCLASSES ; WITH ATTRIBUTE logRecordId; DELETE ONLY-IF-NO-CONTAINED-OBJECTS; REGISTERED AS { smi2NameBinding 3 }; -- Packages additionalInformationPackage PACKAGE ATTRIBUTES additionalInformation GET; REGISTERED AS {smi2Package 18}; additionalTextPackage PACKAGE ATTRIBUTES additionalText GET; REGISTERED AS {smi2Package 19}; correlatedNotificationsPackage PACKAGE ATTRIBUTES correlatedNotifications GET; REGISTERED AS {smi2Package 23}; Newnan Expires August, 1994 Page A-4 DRAFT February, 1994 notificationIdentifierPackage PACKAGE ATTRIBUTES notificationIdentifier GET; REGISTERED AS {smi2Package 24}; -- Attributes allomorphs ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.Allomorphs; MATCHES FOR EQUALITY, SET-COMPARISON, SET- INTERSECTION; REGISTERED AS {smi2AttributeID 50}; logRecordId ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.LogRecordId; MATCHES FOR EQUALITY, ORDERING ; REGISTERED AS { smi2AttributeID 3}; additionalInformation ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.AdditionalInformation; BEHAVIOUR additionalInformationBehaviour BEHAVIOUR DEFINED AS "This attribute is used to supply additional information in notifications.";; REGISTERED AS { smi2AttributeID 6}; additionalText ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.AdditionalText; MATCHES FOR EQUALITY, SUBSTRINGS; BEHAVIOUR additionalTextBehaviour BEHAVIOUR DEFINED AS "This attribute is used to specify additional textual information in notifications.";; REGISTERED AS { smi2AttributeID 7}; backedUpStatus ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.BackedUpStatus; MATCHES FOR EQUALITY ; REGISTERED AS { smi2AttributeID 11}; correlatedNotifications ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.CorrelatedNotifications; BEHAVIOUR correlatedNotificationsBehaviour BEHAVIOUR DEFINED AS "This attribute contains a set of notification identifiers and, if necessary, their associated managed object instance names, for the notifications that are considered to be correlated to this notification.";; REGISTERED AS { smi2AttributeID 12}; Newnan Expires August, 1994 Page A-5 DRAFT February, 1994 eventTime ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute-ASN1Module.EventTime; MATCHES FOR EQUALITY, ORDERING; BEHAVIOUR timeOrdering BEHAVIOUR DEFINED AS "The year, month, day, hour, minute and seconds field are compared in order to determine whether the specified value is greater or less than the value of the attribute. The values for the year, month, day, hour, minute and seconds are determined from the character string representation and the year value is first compared. If equal the month value is compared and this process is continued if the compared fields are equal";; REGISTERED AS { smi2AttributeID 13}; eventType ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.EventTypeId; MATCHES FOR EQUALITY ; REGISTERED AS { smi2AttributeID 14}; loggingTime ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.LoggingTime; MATCHES FOR EQUALITY, ORDERING; REGISTERED AS { smi2AttributeID 59}; monitoredAttributes ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.MonitoredAttributes; REGISTERED AS { smi2AttributeID 15}; notificationIdentifier ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.NotificationIdentifier; MATCHES FOR EQUALITY; BEHAVIOUR notificationIdentifierBehaviour BEHAVIOUR DEFINED AS "This attribute contains a unique identifier for the notification, which may be present in the correlated notifications attribute of other notifications.";; REGISTERED AS { smi2AttributeID 16}; perceivedSeverity ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.PerceivedSeverity; MATCHES FOR EQUALITY; REGISTERED AS { smi2AttributeID 17}; probableCause ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.ProbableCause; Newnan Expires August, 1994 Page A-6 DRAFT February, 1994 MATCHES FOR EQUALITY ; REGISTERED AS { smi2AttributeID 18}; proposedRepairActions ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.ProposedRepairActions; MATCHES FOR EQUALITY, SET-COMPARISON, SET- INTERSECTION; REGISTERED AS { smi2AttributeID 19}; specificProblems ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.SpecificProblems; MATCHES FOR EQUALITY, SET-COMPARISON, SET- INTERSECTION ; REGISTERED AS { smi2AttributeID 27}; stateChangeDefinition ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.AttributeValueChangeDefinition; BEHAVIOUR stateChangeDefinitionBehaviour BEHAVIOUR DEFINED AS "This attribute contains a set of state attribute identifiers and their old and new values.";; REGISTERED AS { smi2AttributeID 28}; thresholdInfo ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.ThresholdInfo; REGISTERED AS { smi2AttributeID 29}; trendIndication ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.TrendIndication; MATCHES FOR EQUALITY; REGISTERED AS { smi2AttributeID 30}; backUpObject ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.BackUpRelationshipObject; MATCHES FOR EQUALITY ; REGISTERED AS { smi2AttributeID 40}; managedObjectClass ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.ObjectClass; MATCHES FOR EQUALITY; REGISTERED AS { smi2AttributeID 60}; managedObjectInstance ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.ObjectInstance; MATCHES FOR EQUALITY; REGISTERED AS { smi2AttributeID 61}; Newnan Expires August, 1994 Page A-7 DRAFT February, 1994 nameBinding ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.NameBinding; MATCHES FOR EQUALITY; REGISTERED AS { smi2AttributeID 63}; objectClass ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.ObjectClass; MATCHES FOR EQUALITY; REGISTERED AS { smi2AttributeID 65}; packages ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute-ASN1Module.Packages; MATCHES FOR EQUALITY, SET-COMPARISON, SET- INTERSECTION; REGISTERED AS { smi2AttributeID 66}; -- The following attribute is included here only to illustrate -- choice and recursion in the output. The -- managed objects which contain this attribute have not been -- included in this example input text. discriminatorConstruct ATTRIBUTE WITH ATTRIBUTE SYNTAX Attribute- ASN1Module.DiscriminatorConstruct; REGISTERED AS { smi2AttributeID 56}; -- Notifications processingErrorAlarm NOTIFICATION BEHAVIOUR processingErrorAlarmBehaviour BEHAVIOUR DEFINED AS "This notification type is used to report processing failure in a managed object.";; WITH INFORMATION SYNTAX Notification- ASN1Module.AlarmInfo AND ATTRIBUTE IDS probableCause probableCause, specificProblems specificProblems, perceivedSeverity perceivedSeverity, backedUpStatus backedUpStatus, backUpObject backUpObject, trendIndication trendIndication, thresholdInfo thresholdInfo, notificationIdentifier notificationIdentifier, correlatedNotifications correlatedNotifications, stateChangeDefinition stateChangeDefinition, monitoredAttributes monitoredAttributes, proposedRepairActions proposedRepairActions, Newnan Expires August, 1994 Page A-8 DRAFT February, 1994 additionalText additionalText, additionalInformation additionalInformation; REGISTERED AS { smi2Notification 10}; -- ASN.1 Modules ManagedObjectClassesDefinitions {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 0} DEFINITIONS ::= BEGIN --EXPORTS everything smi2MObjectClass OBJECT IDENTIFIER ::= {joint-iso-ccitt ms(9) smi(3) part2(2) managedObjectClass(3)} smi2NameBinding OBJECT IDENTIFIER ::= {joint-iso-ccitt ms(9) smi(3) part2(2) nameBinding(6)} smi2Package OBJECT IDENTIFIER ::= {joint-iso-ccitt ms(9) smi(3) part2(2) package(4)} END -- Module ManagedObjectClassesDefinitions Attribute-ASN1Module {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 1} DEFINITIONS IMPLICIT TAGS ::= BEGIN --EXPORTS everything IMPORTS CMISFilter, Attribute, BaseManagedObjectId, AttributeId, ObjectInstance, ObjectClass, EventTypeId FROM CMIP-1 {joint-iso-ccitt ms(9) cmip(1) version1 (1) protocol(3)} DistinguishedName FROM InformationFramework {joint-iso-ccitt ds(5) modules(1) informationFramework(1)} AE-title FROM ACSE-1 {joint-iso-ccitt association-control(2) abstract-syntax(1) apdus(0) version(1)}; -- Note the syntax of AE-title to be used is from -- CCITT Rec. X.227| ISO 8650 corrigendum and not "ANY" smi2AttributeID OBJECT IDENTIFIER ::= {joint-iso-ccitt ms (9) smi(3) part2(2) attribute(7)} smi2AttributeGroup OBJECT IDENTIFIER ::= {joint-iso-ccitt ms (9) smi(3) part2(2) attributeGroup(8)} defaultDiscriminatorConstruct DiscriminatorConstruct ::= and : {} -- The value assignments for the probable cause used in CCITT -- Rec. X.733 | ISO/IEC 10164 -4 are specified below. -- These are specified in accordance with the corrigendum to Newnan Expires August, 1994 Page A-9 DRAFT February, 1994 -- ASN.1 ISO/IEC JTC1/SC21 N5901 arfProbableCause OBJECT IDENTIFIER ::= { joint-iso-ccitt ms(9) smi(3) part2(2) standardSpecificExtension(0) arf(0)} adapterError ProbableCause ::= globalValue: { arfProbableCause 1 } -- values 2-56 are also defined, omitted here for brevity versionMismatch ProbableCause ::= globalValue: { arfProbableCause 57 } AdditionalText ::= GraphicString AdditionalInformation ::= SET OF ManagementExtension Allomorphs ::= SET OF ObjectClass AttributeValueChangeDefinition::= SET OF SEQUENCE {attributeID AttributeId, oldAttributeValue [1] ANY DEFINED BY attributeID OPTIONAL, newAttributeValue [2] ANY DEFINED BY attributeID} BackedUpStatus ::= BOOLEAN -- True implies backed up -- False implies not backed up BackUpRelationshipObject ::= CHOICE {objectName ObjectInstance, noObject NULL} CorrelatedNotifications ::= SET OF SEQUENCE {correlatedNotifications SET OF NotificationIdentifier, sourceObjectInst ObjectInstance OPTIONAL} DiscriminatorConstruct ::= CMISFilter -- where CMISFilter is imported from CMIP as follows: -- -- FilterItem ::= CHOICE { -- equality [0] IMPLICIT Attribute, -- substrings [1] IMPLICIT SEQUENCE OF -- CHOICE { -- intialString [0] IMPLICIT SEQUENCE { -- attributeId AttributeId, -- string ANY DEFINED BY attributeId }, -- anyString [1] IMPLICIT SEQUENCE { -- attributeId AttributeId, -- string ANY DEFINED BY attributeId }, -- finalString [2] IMPLICIT SEQUENCE { -- attributeId AttributeId, -- string ANY DEFINED BY attributeId } }, -- greaterOrEqual [2] IMPLICIT Attribute, -- lessOrEqual [3] IMPLICIT Attribute, -- present [4] AttributeId, -- subsetOf [5] IMPLICIT Attribute, Newnan Expires August, 1994 Page A-10 DRAFT February, 1994 -- supersetOf [6] IMPLICIT Attribute, -- nonNullSetIntersection [7] IMPLICIT Attribute } -- -- CMISFilter ::= CHOICE { -- item [8] FilterItem, -- and [9] IMPLICIT SET OF CMISFilter, -- or [10] IMPLICIT SET OF CMISFilter, -- not [11] CMISFilter } EventTime ::= GeneralizedTime LoggingTime ::= GeneralizedTime LogRecordId ::= SimpleNameType(WITH COMPONENTS {number PRESENT, string ABSENT}) ManagementExtension ::= SEQUENCE {identifier OBJECT IDENTIFIER, significance [1] BOOLEAN DEFAULT FALSE, information [2] ANY DEFINED BY identifier} MonitoredAttributes ::= SET OF Attribute NameBinding ::= OBJECT IDENTIFIER NotificationIdentifier ::= INTEGER -- reuse only when no requirement exists -- for correlating prior notification. ObservedValue ::= CHOICE {integer INTEGER, real REAL } Packages ::= SET OF OBJECT IDENTIFIER PerceivedSeverity ::= ENUMERATED {indeterminate (0), -- used when it is not possible -- to assign the following values critical (1), major (2), minor (3), warning (4), cleared (5)} ProbableCause ::= CHOICE {globalValue OBJECT IDENTIFIER, localValue INTEGER} -- The values for the probable cause defined in CCITT Rec -- X.733 | ISO/IEC 10164-4 are specified above. ProposedRepairActions ::= SET OF SpecificIdentifier SimpleNameType ::= CHOICE {number INTEGER, string GraphicString} SpecificIdentifier ::= CHOICE { OBJECT IDENTIFIER, INTEGER} Newnan Expires August, 1994 Page A-11 DRAFT February, 1994 SpecificProblems ::= SET OF SpecificIdentifier ThresholdInfo ::= SEQUENCE {triggeredThreshold AttributeId, observedValue ObservedValue, thresholdLevel [1] ThresholdLevelInd OPTIONAL, -- Indication needed for multilevel thresholds armTime [2] GeneralizedTime OPTIONAL} ThresholdLevelInd ::= CHOICE {up [1] SEQUENCE { high ObservedValue, low ObservedValue OPTIONAL -- up is the only permitted choice for counter }, down [2] SEQUENCE { high ObservedValue, low ObservedValue}} TrendIndication ::= ENUMERATED {lessSevere (0), noChange (1), moreSevere (2)} END -- end of supporting productions Notification-ASN1Module {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 2} DEFINITIONS IMPLICIT TAGS::= BEGIN IMPORTS ProbableCause,SpecificProblems, PerceivedSeverity, BackedUpStatus, TrendIndication, ThresholdInfo, NotificationIdentifier, CorrelatedNotifications, MonitoredAttributes, ProposedRepairActions, AdditionalText, AdditionalInformation, AttributeValueChangeDefinition FROM Attribute-ASN1Module ObjectClass,AttributeId,ObjectInstance FROM CMIP-1 {joint-iso-ccitt ms(9) cmip(1) version1 (1) protocol(3)}; --EXPORTS everything smi2Notification OBJECT IDENTIFIER ::= {joint-iso-ccitt ms (9) smi(3) part2(2) notification(10)} AlarmInfo ::= SEQUENCE { probableCause ProbableCause, specificProblems [1] SpecificProblems OPTIONAL, perceivedSeverity PerceivedSeverity, backedUpStatus BackedUpStatus OPTIONAL, backUpObject [2] ObjectInstance OPTIONAL, trendIndication [3] TrendIndication OPTIONAL, thresholdInfo [4] ThresholdInfo OPTIONAL, notificationIdentifier [5] NotificationIdentifier OPTIONAL, correlatedNotifications [6] CorrelatedNotifications OPTIONAL, Newnan Expires August, 1994 Page A-12 DRAFT February, 1994 stateChangeDefinition [7] AttributeValueChangeDefinition OPTIONAL, monitoredAttributes [8] MonitoredAttributes OPTIONAL, proposedRepairActions [9] ProposedRepairActions OPTIONAL, additionalText AdditionalText OPTIONAL, additionalInformation [10] AdditionalInformation OPTIONAL} END -- Module smi2Notification A.2 OUTPUT SNMPV1 MANAGEMENT INFORMATION BASE -- ****************************************************** -- Partial Translation of -- CCITT Rec. X.721 | ISO/IEC 10165-2 : 1992 -- Definition of Management Information (DMI) -- into Internet SNMPv1 MIB -- ****************************************************** MIBsmi2SNMPv1Increment1 DEFINITIONS ::= BEGIN IMPORTS smi2MObjectClass, smi2Package FROM ManagedObjectClassDefinitions {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 0} smi2AttributeID FROM Attribute-ASN1Module {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 1} smi2Notification FROM Notification-ASN1Module {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 2} AnyDefinedBy, ChoiceOfIntOrOID, Complex, GraphicString, Pointer, TableIndex, MultiComplex, Recursion, RecursivelyNested, SourceIndicator, Parent FROM IIMComibtransConventions Smi2SpecificIdentifier FROM MIBsmi2ConventionsIncrement1 InstancePointer, TimeStamp, RowStatus, TruthValue FROM SNMPv2-TC iimcIIMCOMIBTRANS FROM IimcAssignedOIDs {iso(1) member-body(2) 124 forum(360501) iimcManual(15) iimcModule(0) 1} smi2Translated, smi2TranslatedModules, smi2TranslatedObjects, smi2TranslatedNotifications Newnan Expires August, 1994 Page A-13 DRAFT February, 1994 FROM MIBsmi2ComplianceIncrement1 OBJECT-TYPE FROM RFC1155-SMI TRAP-TYPE FROM RFC-1215; --alarmRecord OBJECT-GROUP --OBJECTS { --smi2AlaRecLoggingTime, --smi2AlaRecManagedObjectClass, --smi2AlaRecManagedObjectInstance, --smi2AlaRecEventType, --smi2AlaRecEventTime, --smi2AlaRecNotificationIdentifier, --smi2AlaRecCorrelatedNotifications, --smi2AlaRecAdditionalText, --smi2AlaRecAdditionalInformation, --smi2AlaRecProbableCause, --smi2AlaRecPerceivedSeverity, --smi2AlaRecSpecificProblems, --smi2AlaRecBackedUpStatus, --smi2AlaRecBackUpObject, --smi2AlaRecTrendIndication, --smi2AlaRecThresholdInfo, --smi2AlaRecStateChangeDefinition, --smi2AlaRecMonitoredAttributes, --smi2AlaRecProposedRepairActions, --smi2AlaRecParent, --smi2AlaRecRowStatus, --smi2AlaRecCorNotNotificationIdentifier, --smi2AlaRecCorNotSourceObject, --smi2AlaRecCorNotRowStatus, --smi2AlaRecAddInfSignificance, --smi2AlaRecAddInfInformation, --smi2AlaRecAddInfRowStatus, --smi2AlaRecSpeProSpecificIdentifier, --smi2AlaRecSpeProRowStatus, --smi2AlaRecThrInfTriggeredThreshold, --smi2AlaRecThrInfObservedValue, --smi2AlaRecThrInfThresholdLevelIndUpDown, --smi2AlaRecThrInfThresholdLevelIndHigh, --smi2AlaRecThrInfThresholdLevelIndLow, --smi2AlaRecThrInfArmTime, --smi2AlaRecThrInfRowStatus, --smi2AlaRecStaChaDefOldAttributeValue, --smi2AlaRecStaChaDefNewAttributeValue, --smi2AlaRecStaChaDefRowStatus, --smi2AlaRecMonAttAttribute, --smi2AlaRecMonAttRowStatus, --smi2AlaRecProRepActSpecificIdentifier, --smi2AlaRecProRepActRowStatus --} Newnan Expires August, 1994 Page A-14 DRAFT February, 1994 --STATUS mandatory --DESCRIPTION "This OBJECT-GROUP represents the --MANAGED OBJECT CLASS CCITT Rec. X.721|ISO/IEC --10165-2:1992:alarmRecord, translated according to --the procedures specified by IIMCOMIBTRANS into --the OBJECT-TYPE smi2AlarmRecordTable. Refer to the --smi2AlarmRecordTable OBJECT-TYPE macro for --additional information." --REFERENCE "REFMACRO smi2Doc CCITT Rec. X.721|ISO/IEC 10165-2:1992" --::= {smi2TranslatedObjects 1} smi2ProcessingErrorAlarm TRAP-TYPE ENTERPRISE {smi2TranslatedNotifications} VARIABLES { smi2AlaRecManagedObjectInstance, smi2AlaRecEventTime, smi2AlaRecProbableCause, smi2AlaRecPerceivedSeverity } DESCRIPTION "This notification type is used to report processing failure in a managed object. This notification carries information associated with an smi2AlarmRecordTable log record. The VarBindList associated with this TRAP-TYPE may include the following additional information from that log record: smi2AlaRecBackedUpStatus, smi2AlaRecBackUpObject, smi2AlaRecTrendIndication, smi2AlaRecThresholdInfo, smi2AlaRecNotificationIdentifier, smi2AlaRecAdditionalText." REFERENCE "NOTIFICATION smi2Doc:processingErrorAlarm { smi2Notification 10 } FIELD smi2Doc:probableCause MAPS TO smi2AlaRecProbableCause, FIELD smi2Doc:perceivedSeverity MAPS TO smi2AlaRecPerceivedSeverity" ::= 10 -- Class Table smi2AlarmRecordTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlarmRecordEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This managed object is used to represent logged information that resulted from alarm notifications or event reports. All objects of this object group are translated from the ISO/CCITT alarmRecord managed Newnan Expires August, 1994 Page A-15 DRAFT February, 1994 object class according to NMF IIMCOMIBTRANS and conform to behavioral requirements that it specifies. alarmRecordBehaviour BEHAVIOUR DEFINED AS This managed object is used to represent logged information that resulted from alarm notifications or event reports. logRecordBehaviour BEHAVIOUR DEFINED AS This managed object represents the information stored in the logs." REFERENCE "MANAGED OBJECT CLASS CCITT Rec. X.721|ISO/IEC 10165-2:1992:alarmRecord { smi2MObjectClass 1 }" ::= {smi2TranslatedObjects 1 1} -- Class Entry smi2AlarmRecordEntry OBJECT-TYPE SYNTAX Smi2AlarmRecordEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2AlarmRecordTable." INDEX {smi2AlaRecTableIndex} ::= {smi2TranslatedObjects 1 1 1} Smi2AlarmRecordEntry ::= SEQUENCE { smi2AlaRecTableIndex TableIndex, smi2AlaRecLoggingTime TimeStamp, smi2AlaRecManagedObjectClass ChoiceOfIntOrOID, smi2AlaRecManagedObjectInstance InstancePointer, smi2AlaRecEventType ChoiceOfIntOrOID, smi2AlaRecEventTime TimeStamp, smi2AlaRecNotificationIdentifier INTEGER, smi2AlaRecCorrelatedNotifications MultiComplex, smi2AlaRecAdditionalText GraphicString, smi2AlaRecAdditionalInformation MultiComplex, smi2AlaRecProbableCause ChoiceOfIntOrOID, smi2AlaRecPerceivedSeverity PerceivedSeverity, smi2AlaRecSpecificProblems MultiComplex, smi2AlaRecBackedUpStatus TruthValue, smi2AlaRecBackUpObject InstancePointer, smi2AlaRecTrendIndication TrendIndication, smi2AlaRecThresholdInfo Complex, smi2AlaRecStateChangeDefinition MultiComplex, smi2AlaRecMonitoredAttributes MultiComplex, smi2AlaRecProposedRepairActions MultiComplex, smi2AlaRecParent Parent, smi2AlaRecRowStatus RowStatus } -- Class Entry Columns Newnan Expires August, 1994 Page A-16 DRAFT February, 1994 smi2AlaRecTableIndex OBJECT-TYPE SYNTAX TableIndex ACCESS not-accessible STATUS mandatory DESCRIPTION "This is an index of the smi2AlarmRecordTable." ::= {smi2TranslatedObjects 1 1 1 1} smi2AlaRecLoggingTime OBJECT-TYPE SYNTAX TimeStamp ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the loggingTime attribute type are specified in the Logging Time attribute in CCITT Rec. X.735|ISO/IEC 10164-6." REFERENCE "PACKAGE smi2Doc:logRecordPackage ATTRIBUTE smi2Doc:loggingTime { smi2AttributeID 59 }" ::= {smi2TranslatedObjects 1 1 1 2} smi2AlaRecManagedObjectClass OBJECT-TYPE SYNTAX ChoiceOfIntOrOID ACCESS read-only STATUS mandatory DESCRIPTION "The managedObjectClass attribute type is specified to allow filtering of the Managed Object Class parameter when event reports are logged as records." REFERENCE "PACKAGE smi2Doc:eventLogRecordPackage ATTRIBUTE smi2Doc:managedObjectClass { smi2AttributeID 60 }" ::= {smi2TranslatedObjects 1 1 1 3} smi2AlaRecManagedObjectInstance OBJECT-TYPE SYNTAX InstancePointer ACCESS read-only STATUS mandatory DESCRIPTION "The managedObjectInstance attribute type is specified to allow filtering of the Managed Object Instance parameter when event reports are logged as records." REFERENCE "PACKAGE smi2Doc:eventLogRecordPackage ATTRIBUTE smi2Doc:managedObjectInstance { smi2AttributeID 61 }" ::= {smi2TranslatedObjects 1 1 1 4} smi2AlaRecEventType OBJECT-TYPE SYNTAX ChoiceOfIntOrOID ACCESS read-only Newnan Expires August, 1994 Page A-17 DRAFT February, 1994 STATUS mandatory DESCRIPTION "The semantics of the eventType attribute type are specified in the Event type parameter in CCITT Rec. X.710|ISO/IEC 9595." REFERENCE "PACKAGE smi2Doc:eventLogRecordPackage ATTRIBUTE smi2Doc:eventType { smi2AttributeID 14 }" ::= {smi2TranslatedObjects 1 1 1 5} smi2AlaRecEventTime OBJECT-TYPE SYNTAX TimeStamp ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the eventTime attribute type are specified in the Event Time parameter in CCITT Rec. X.710|ISO/IEC 9595. This object belongs to the eventTimePackage package, present if the event time parameter was present in the received event report." REFERENCE "PACKAGE smi2Doc:eventTimePackage {smi2Package 11} ATTRIBUTE smi2Doc:eventTime { smi2AttributeID 13 }" ::= {smi2TranslatedObjects 1 1 1 6} smi2AlaRecNotificationIdentifier OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the notificationIdentifier attribute type are specified in the Notification identifier attribute in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the notificationIdentifierPackage package, present if the notification Identifier parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses." REFERENCE "PACKAGE smi2Doc:notificationIdentifierPackage {smi2Package 24} ATTRIBUTE smi2Doc:notificationIdentifier { smi2AttributeID 16 }" ::= {smi2TranslatedObjects 1 1 1 7} smi2AlaRecCorrelatedNotifications OBJECT-TYPE SYNTAX MultiComplex ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the correlatedNotifications attribute type are specified in the Correlated Notifications parameter in CCITT Rec. X.733|ISO/IEC Newnan Expires August, 1994 Page A-18 DRAFT February, 1994 10164-4. This object belongs to the correlatedNotificationsPackage package, present if the correlatedNotifications parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses." REFERENCE "PACKAGE smi2Doc:correlatedNotificationsPackage {smi2Package 23} ATTRIBUTE smi2Doc:correlatedNotifications { smi2AttributeID 12 }" DEFVAL {smi2AlaRecCorrelatedNotificationsEntry} ::= {smi2TranslatedObjects 1 1 1 8} smi2AlaRecAdditionalText OBJECT-TYPE SYNTAX GraphicString ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the additionalText attribute type are specified in the Additional Text parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the additionalTextPackage package, present if the Additional text parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses." REFERENCE "PACKAGE smi2Doc:additionalTextPackage {smi2Package 19} ATTRIBUTE smi2Doc:additionalText { smi2AttributeID 7 }" ::= {smi2TranslatedObjects 1 1 1 9} smi2AlaRecAdditionalInformation OBJECT-TYPE SYNTAX MultiComplex ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the additionalInformation attribute type are specified in the Additional Information parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the additionalInformationPackage package, present if the Additional information parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses." REFERENCE "PACKAGE smi2Doc:additionalInformationPackage {smi2Package 18} ATTRIBUTE smi2Doc:additionalInformation { smi2AttributeID 6 }" DEFVAL {smi2AlaRecAdditionalInformationEntry} Newnan Expires August, 1994 Page A-19 DRAFT February, 1994 ::= {smi2TranslatedObjects 1 1 1 10} smi2AlaRecProbableCause OBJECT-TYPE SYNTAX ChoiceOfIntOrOID ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the probableCause attribute type are specified in the Probable Cause parameter in CCITT Rec. X.733|ISO/IEC 10164-4." REFERENCE "PACKAGE smi2Doc:alarmRecordPackage ATTRIBUTE smi2Doc:probableCause { smi2AttributeID 18 }" ::= {smi2TranslatedObjects 1 1 1 11} smi2AlaRecPerceivedSeverity OBJECT-TYPE SYNTAX PerceivedSeverity ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the perceivedSeverity attribute type are specified in the Perceived Severity parameter in CCITT Rec. X.733|ISO/IEC 10164-4. ENUMERATED maps to INTEGER, value (0) maps to (32767)." REFERENCE "PACKAGE smi2Doc:alarmRecordPackage ATTRIBUTE smi2Doc:perceivedSeverity { smi2AttributeID 17 }" ::= {smi2TranslatedObjects 1 1 1 12} PerceivedSeverity ::= INTEGER { indeterminate (32767), critical (1), major (2), minor (3), warning (4), cleared (5) } smi2AlaRecSpecificProblems OBJECT-TYPE SYNTAX MultiComplex ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the specificProblems attribute type are specified in the Specific Problems parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the specificProblemsPackage package, present if the Specific problems parameter is present in the Newnan Expires August, 1994 Page A-20 DRAFT February, 1994 alarm notification or event report corresponding to the instance of alarm record." REFERENCE "PACKAGE smi2Doc:specificProblemsPackage {smi2Package 1} ATTRIBUTE smi2Doc:specificProblems { smi2AttributeID 27 }" DEFVAL {smi2AlaRecSpecificProblemsEntry} ::= {smi2TranslatedObjects 1 1 1 13} smi2AlaRecBackedUpStatus OBJECT-TYPE SYNTAX TruthValue ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the backedUpStatus attribute type are specified in the Backed-up Status parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the backedUpStatusPackage package, present if the Backed up status parameter is present in the alarm notification or event report corresponding to the instance of alarm record." REFERENCE "PACKAGE smi2Doc:backedUpStatusPackage {smi2Package 2} ATTRIBUTE smi2Doc:backedUpStatus { smi2AttributeID 41 }" ::= {smi2TranslatedObjects 1 1 1 14} smi2AlaRecBackUpObject OBJECT-TYPE SYNTAX InstancePointer ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the backUpObject attribute type are specified in the Back-Up Object relationship attribute in CCITT Rec. X.732|ISO/IEC 10164-3. This attribute is also used in CCITT Rec. X.734|ISO/IEC 10164-4. This object belongs to the backUpObjectPackage package, present if the Backup object parameter is present in the alarm notification or event report corresponding to the instance of alarm record. A NULL value shall be indicated by {0 0}" REFERENCE "PACKAGE smi2Doc:backUpObjectPackage {smi2Package 3} ATTRIBUTE smi2Doc:backUpObject {smi2AttributeID 40}" ::= {smi2TranslatedObjects 1 1 1 15} smi2AlaRecTrendIndication OBJECT-TYPE SYNTAX TrendIndication ACCESS read-only Newnan Expires August, 1994 Page A-21 DRAFT February, 1994 STATUS mandatory DESCRIPTION "The semantics of the trendIndication attribute type are specified in the Trend Indication parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the trendIndicationPackage package, present if the Trend indication parameter is present in the alarm notification or event report corresponding to the instance of alarm record. ENUMERATED maps to INTEGER, value (0) maps to (32767)." REFERENCE "PACKAGE smi2Doc:trendIndicationPackage {smi2Package 4} ATTRIBUTE smi2Doc:trendIndication {smi2AttributeID 30}" ::= {smi2TranslatedObjects 1 1 1 16} TrendIndication ::= INTEGER { lessSevere (32767), noChange (1), moreSevere (2) } smi2AlaRecThresholdInfo OBJECT-TYPE SYNTAX Complex ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the thresholdInfo attribute type are specified in the Threshold Info parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the thresholdInfoPackage package, present if the value for probableCause attribute is thresholdCrossed." REFERENCE "PACKAGE smi2Doc:thresholdInfoPackage {smi2Package 5} ATTRIBUTE smi2Doc:thresholdInfo {smi2AttributeID 30}" DEFVAL {smi2AlaRecThresholdInfoEntry} ::= {smi2TranslatedObjects 1 1 1 17} smi2AlaRecStateChangeDefinition OBJECT-TYPE SYNTAX MultiComplex ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the stateChangeDefinition attribute type are specified in the State change definition parameter in CCITT Rec. X.731|ISO/IEC 10164-2. This object belongs to the stateChangeDefinitionPackage package, present if there is a state transition for the states defined in State Management Function, Newnan Expires August, 1994 Page A-22 DRAFT February, 1994 corresponding to the alarm type specified in the alarm record." REFERENCE "PACKAGE smi2Doc:stateChangeDefinitionPackage {smi2Package 6} ATTRIBUTE smi2Doc:stateChangeDefinition {smi2AttributeID 28}" DEFVAL {smi2AlaRecStateChangeDefinitionEntry} ::= {smi2TranslatedObjects 1 1 1 18} smi2AlaRecMonitoredAttributes OBJECT-TYPE SYNTAX MultiComplex ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the monitoredAttributes attribute type are specified in the Monitored Attributes parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the monitoredAttributesPackage package, present if the monitoredAttributes parameter is present in the alarm notification or event report corresponding to the instance of alarm record." REFERENCE "PACKAGE smi2Doc:monitoredAttributesPackage {smi2Package 7} ATTRIBUTE smi2Doc:monitoredAttributes {smi2AttributeID 15}" DEFVAL {smi2AlaRecMonitoredAttributesEntry} ::= {smi2TranslatedObjects 1 1 1 19} smi2AlaRecProposedRepairActions OBJECT-TYPE SYNTAX MultiComplex ACCESS read-only STATUS mandatory DESCRIPTION "The semantics of the proposedRepairActions attribute type are specified in the Proposed Repair Actions parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the proposedRepairActionsPackage package, present if the proposedRepairActions parameter is present in the alarm notification or event report corresponding to the instance of alarm record." REFERENCE "PACKAGE smi2Doc:proposedRepairActionsPackage {smi2Package 8} ATTRIBUTE smi2Doc:proposedRepairActions {smi2AttributeID 19}" DEFVAL {smi2AlaRecProposedRepairActionsEntry} ::= {smi2TranslatedObjects 1 1 1 20} smi2AlaRecParent OBJECT-TYPE SYNTAX Parent Newnan Expires August, 1994 Page A-23 DRAFT February, 1994 ACCESS read-only STATUS mandatory DESCRIPTION "This object is a pointer to the parent of this entry." ::= {smi2TranslatedObjects 1 1 1 21} smi2AlaRecRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 1 1 22} -- Alarm Record Correlated Notifications Side Table smi2AlaRecCorrelatedNotificationsTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecCorrelatedNotificationsEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "CorrelatedNotifications ::= SET OF SEQUENCE { correlatedNotifications SET OF NotificationIdentifier, sourceObject ObjectInstance OPTIONAL} HUMAN DECISION: Simplify this syntax as SET OF SEQUENCE {NotificationIdentifer, ObjectInstance}. This preserves all information while reducing the nesting of side tables. NotificationIdentifiers for the same ObjectInstance may appear as multiple elements of this SET (side table entries)." ::= {smi2TranslatedObjects 1 2} smi2AlaRecCorrelatedNotificationsEntry OBJECT-TYPE SYNTAX Smi2AlaRecCorrelatedNotificationsEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2AlaRecCorrelatedNotificationsTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecCorNotTableIndex} ::= {smi2TranslatedObjects 1 2 1} Smi2AlaRecCorrelatedNotificationsEntry ::= SEQUENCE { smi2AlaRecCorNotTableIndex TableIndex, smi2AlaRecCorNotNotificationIdentifier INTEGER, smi2AlaRecCorNotSourceObject InstancePointer, smi2AlaRecCorNotRowStatus Newnan Expires August, 1994 Page A-24 DRAFT February, 1994 RowStatus } smi2AlaRecCorNotTableIndex OBJECT-TYPE SYNTAX TableIndex ACCESS not-accessible STATUS mandatory DESCRIPTION "This is an index of the smi2AlaRecCorrelatedNotificationsTable." ::= {smi2TranslatedObjects 1 2 1 1} smi2AlaRecCorNotNotificationIdentifier OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "NotificationIdentifier ::= INTEGER" ::= {smi2TranslatedObjects 1 2 1 2} smi2AlaRecCorNotSourceObject OBJECT-TYPE SYNTAX InstancePointer ACCESS read-only STATUS mandatory DESCRIPTION "The syntax ObjectInstance is imported from X.500. This object corresponds to the sourceObject option, which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 2 1 3} smi2AlaRecCorNotRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 2 1 4} -- Alarm Record Additional Information Side Table smi2AlaRecAdditionalInformationTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecAdditionalInformationEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "SET OF ManagementExtension ManagementExtension ::= SEQUENCE { identifier OBJECT IDENTIFIER, significance BOOLEAN, information ANY DEFINED BY OBJECT IDENTIFIER}" ::= {smi2TranslatedObjects 1 3} Newnan Expires August, 1994 Page A-25 DRAFT February, 1994 smi2AlaRecAdditionalInformationEntry OBJECT-TYPE SYNTAX Smi2AlaRecAdditionalInformationEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2AlaRecAdditionalInformationTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecAddInfTableIndex} ::= {smi2TranslatedObjects 1 3 1} Smi2AlaRecAdditionalInformationEntry ::= SEQUENCE { smi2AlaRecAddInfTableIndex TableIndex, smi2AlaRecAddInfSignificance TruthValue, smi2AlaRecAddInfInformation AnyDefinedBy, smi2AlaRecAddInfRowStatus RowStatus } smi2AlaRecAddInfTableIndex OBJECT-TYPE SYNTAX TableIndex ACCESS not-accessible STATUS mandatory DESCRIPTION "This is an index of the smi2AlaRecAdditionalInformationTable." ::= {smi2TranslatedObjects 1 3 1 1} smi2AlaRecAddInfSignificance OBJECT-TYPE SYNTAX TruthValue ACCESS read-only STATUS mandatory DESCRIPTION "significance BOOLEAN DEFAULT FALSE" DEFVAL {0} ::= {smi2TranslatedObjects 1 3 1 2} smi2AlaRecAddInfInformation OBJECT-TYPE SYNTAX AnyDefinedBy ACCESS read-only STATUS mandatory DESCRIPTION "information ANY DEFINED BY OBJECT IDENTIFIER This object is a place holder for a construct not supported at the current level of this specification. An implementation (at the current level) shall not populate this value." ::= {smi2TranslatedObjects 1 3 1 3} smi2AlaRecAddInfRowStatus OBJECT-TYPE SYNTAX RowStatus Newnan Expires August, 1994 Page A-26 DRAFT February, 1994 ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 3 1 4} -- Alarm Record Specific Problems Side Table smi2AlaRecSpecificProblemsTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecSpecificProblemsEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "SpecificProblems ::= SET OF SpecificIdentifier" ::= {smi2TranslatedObjects 1 4} smi2AlaRecSpecificProblemsEntry OBJECT-TYPE SYNTAX Smi2AlaRecSpecificProblemsEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2AlaRecSpecificProblemsTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecSpeProTableIndex} ::= {smi2TranslatedObjects 1 4 1} Smi2AlaRecSpecificProblemsEntry ::= SEQUENCE { smi2AlaRecSpeProTableIndex TableIndex, smi2AlaRecSpeProSpecificIdentifier Smi2SpecificIdentifier, smi2AlaRecSpeProRowStatus RowStatus } smi2AlaRecSpeProTableIndex OBJECT-TYPE SYNTAX TableIndex ACCESS not-accessible STATUS mandatory DESCRIPTION "This is an index of the smi2AlaRecSpecificProblemsTable." ::= {smi2TranslatedObjects 1 4 1 1} smi2AlaRecSpeProSpecificIdentifier OBJECT-TYPE SYNTAX Smi2SpecificIdentifier ACCESS read-only STATUS mandatory DESCRIPTION "Refer to the Smi2SpecificIdentifier textual convention." ::= {smi2TranslatedObjects 1 4 1 2} smi2AlaRecSpeProRowStatus OBJECT-TYPE Newnan Expires August, 1994 Page A-27 DRAFT February, 1994 SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 4 1 3} -- Alarm Record Threshold Info Side Table smi2AlaRecThresholdInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecThresholdInfoEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "ThresholdInfo ::= SEQUENCE {triggeredThreshold AttributeId, observedValue ObservedValue, thresholdLevel [1] ThresholdLevelInd OPTIONAL, armTime [2] GeneralizedTime OPTIONAL} ThresholdLevelInd ::= CHOICE {up [1] SEQUENCE {high ObservedValue, low ObservedValue OPTIONAL} down [2] SEQUENCE {high ObservedValue, low ObservedValue}} HUMAN DECISION: ThresholdLevelInd is treated as if it were SEQUENCE { ThresholdLevelIndUpDown BOOLEAN, ThresholdLevelIndHigh ObservedValue, ThresholdLevelIndLow ObservedValue }. This translation preserves all information while simplifying the number and nesting of side tables." ::= {smi2TranslatedObjects 1 5} smi2AlaRecThresholdInfoEntry OBJECT-TYPE SYNTAX Smi2AlaRecThresholdInfoEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2AlaRecThresholdInfoTable." INDEX {smi2AlaRecTableIndex} ::= {smi2TranslatedObjects 1 5 1} Smi2AlaRecThresholdInfoEntry ::= SEQUENCE { smi2AlaRecThrInfTriggeredThreshold ChoiceOfIntOrOID, smi2AlaRecThrInfObservedValue INTEGER, smi2AlaRecThrInfThresholdLevelIndUpDown TruthValue, smi2AlaRecThrInfThresholdLevelIndHigh INTEGER, smi2AlaRecThrInfThresholdLevelIndLow INTEGER, Newnan Expires August, 1994 Page A-28 DRAFT February, 1994 smi2AlaRecThrInfArmTime TimeStamp, smi2AlaRecThrInfRowStatus RowStatus } smi2AlaRecThrInfTriggeredThreshold OBJECT-TYPE SYNTAX ChoiceOfIntOrOID ACCESS read-only STATUS mandatory DESCRIPTION "AttributeId ::= CHOICE {INTEGER, REAL}" ::= {smi2TranslatedObjects 1 5 1 2} smi2AlaRecThrInfObservedValue OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "ObservedValue ::= CHOICE {INTEGER, REAL} UNITS Scaled to represent REAL by factor 100 (i.e., INTEGER value 3 is represented as 300, REAL value .03 is represented as 3." ::= {smi2TranslatedObjects 1 5 1 3} smi2AlaRecThrInfThresholdLevelIndUpDown OBJECT-TYPE SYNTAX TruthValue ACCESS read-only STATUS mandatory DESCRIPTION "True means Up; False means Down. HUMAN DECISION: Refer to smi2AlaRecThresholdInfoTable for rationale. This object corresponds to the thresholdLevel option, which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 5 1 4} smi2AlaRecThrInfThresholdLevelIndHigh OBJECT-TYPE SYNTAX INTEGER ACCESS read-only STATUS mandatory DESCRIPTION "ObservedValue ::= CHOICE {INTEGER, REAL} UNITS Scaled to represent REAL by factor 100 (i.e., INTEGER value 3 is represented as 300, REAL value .03 is represented as 3. This object corresponds to the thresholdLevel option, which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 5 1 5} smi2AlaRecThrInfThresholdLevelIndLow OBJECT-TYPE SYNTAX INTEGER ACCESS read-only Newnan Expires August, 1994 Page A-29 DRAFT February, 1994 STATUS mandatory DESCRIPTION "ObservedValue ::= CHOICE {INTEGER, REAL} UNITS Scaled to represent REAL by factor 100 (i.e., INTEGER value 3 is represented as 300, REAL value .03 is represented as 3." ::= {smi2TranslatedObjects 1 5 1 6} smi2AlaRecThrInfArmTime OBJECT-TYPE SYNTAX TimeStamp ACCESS read-only STATUS mandatory DESCRIPTION "armTime GeneralizedTime OPTIONAL This object corresponds to the armTime option, which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 5 1 7} smi2AlaRecThrInfRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 5 1 8} -- Alarm Record State Change Definition Side Table smi2AlaRecStateChangeDefinitionTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecStateChangeDefinitionEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "StateChangeDefinition ::= AttributeValueChangeDefinition AttributeValueChangeDefinition ::= SET OF SEQUENCE { attributeID attributeId, oldAttributeValue [1] ANY DEFINED BY attributeID OPTIONAL, newAttributeValue [2] ANY DEFINED BY attributeID}" ::= {smi2TranslatedObjects 1 6} smi2AlaRecStateChangeDefinitionEntry OBJECT-TYPE SYNTAX Smi2AlaRecStateChangeDefinitionEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2AlaRecStateChangeDefinitionTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecStaChaDefTableIndex} ::= {smi2TranslatedObjects 1 6 1} Newnan Expires August, 1994 Page A-30 DRAFT February, 1994 Smi2AlaRecStateChangeDefinitionEntry ::= SEQUENCE { smi2AlaRecStaChaDefTableIndex TableIndex, smi2AlaRecStaChaDefOldAttributeValue AnyDefinedBy, smi2AlaRecStaChaDefNewAttributeValue AnyDefinedBy, smi2AlaRecStaChaDefRowStatus RowStatus } smi2AlaRecStaChaDefTableIndex OBJECT-TYPE SYNTAX TableIndex ACCESS not-accessible STATUS mandatory DESCRIPTION "This is an index of the smi2AlaRecStateChangeDefinitionTable." ::= {smi2TranslatedObjects 1 6 1 1} smi2AlaRecStaChaDefOldAttributeValue OBJECT-TYPE SYNTAX AnyDefinedBy ACCESS read-only STATUS mandatory DESCRIPTION "oldAttributeValue [1] ANY DEFINED BY attributeID OPTIONAL This object corresponds to the oldAttributeValue option, which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 6 1 2} smi2AlaRecStaChaDefNewAttributeValue OBJECT-TYPE SYNTAX AnyDefinedBy ACCESS read-only STATUS mandatory DESCRIPTION "newAttributeValue [1] ANY DEFINED BY attributeID" ::= {smi2TranslatedObjects 1 6 1 3} smi2AlaRecStaChaDefRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 6 1 4} -- Alarm Record Monitored Attributes Side Table smi2AlaRecMonitoredAttributesTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecMonitoredAttributesEntry ACCESS not-accessible STATUS mandatory Newnan Expires August, 1994 Page A-31 DRAFT February, 1994 DESCRIPTION "MonitoredAttributes ::= SET OF Attribute" ::= {smi2TranslatedObjects 1 7} smi2AlaRecMonitoredAttributesEntry OBJECT-TYPE SYNTAX Smi2AlaRecMonitoredAttributesEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2AlaRecMonitoredAttributesTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecMonAttTableIndex} ::= {smi2TranslatedObjects 1 7 1} Smi2AlaRecMonitoredAttributesEntry ::= SEQUENCE { smi2AlaRecMonAttTableIndex TableIndex, smi2AlaRecMonAttAttribute AnyDefinedBy, smi2AlaRecMonAttRowStatus RowStatus } smi2AlaRecMonAttTableIndex OBJECT-TYPE SYNTAX TableIndex ACCESS not-accessible STATUS mandatory DESCRIPTION "This is an index of the smi2AlaRecMonitoredAttributesTable." ::= {smi2TranslatedObjects 1 7 1 1} smi2AlaRecMonAttAttribute OBJECT-TYPE SYNTAX AnyDefinedBy ACCESS read-only STATUS mandatory DESCRIPTION "Attribute ::= SEQUENCE {attributeId AttributeId, attributeValue ANY DEFINED BY AttributeId}" ::= {smi2TranslatedObjects 1 7 1 2} smi2AlaRecMonAttRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 7 1 3} -- Alarm Record Proposed Repair Actions Side Table smi2AlaRecProposedRepairActionsTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecProposedRepairActionsEntry Newnan Expires August, 1994 Page A-32 DRAFT February, 1994 ACCESS not-accessible STATUS mandatory DESCRIPTION "ProposedRepairActions ::= SET OF SpecificIdentifier" ::= {smi2TranslatedObjects 1 8} smi2AlaRecProposedRepairActionsEntry OBJECT-TYPE SYNTAX Smi2AlaRecProposedRepairActionsEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2AlaRecProposedRepairActionsTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecProRepActTableIndex} ::= {smi2TranslatedObjects 1 8 1} Smi2AlaRecProposedRepairActionsEntry ::= SEQUENCE { smi2AlaRecProRepActTableIndex TableIndex, smi2AlaRecProRepActSpecificIdentifier Smi2SpecificIdentifier, smi2AlaRecProRepActRowStatus RowStatus } smi2AlaRecProRepActTableIndex OBJECT-TYPE SYNTAX TableIndex ACCESS not-accessible STATUS mandatory DESCRIPTION "This is an index of the smi2AlaRecProposedRepairActionsTable." ::= {smi2TranslatedObjects 1 8 1 1} smi2AlaRecProRepActSpecificIdentifier OBJECT-TYPE SYNTAX Smi2SpecificIdentifier ACCESS read-only STATUS mandatory DESCRIPTION "Refer to the Smi2SpecificIdentifier textual convention." ::= {smi2TranslatedObjects 1 8 1 2} smi2AlaRecProRepActRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 8 1 3} -- Discriminator Construct Side Table Newnan Expires August, 1994 Page A-33 DRAFT February, 1994 -- The following table is included to illustrate the concepts -- of choice and recursion. This table is NOT a side table -- which is part of the alarmRecord OBJECT-GROUP. Rather, -- this table would be a side table of another OBJECT-GROUP -- representing the eventForwardingDiscriminator MO CLASS. -- -- eventForwardingDiscriminator OBJECT-GROUP -- ::= {smi2TranslatedObjects 4} -- -- smi2EventForwardingDiscriminatorTable OBJECT-TYPE -- ::= {smi2TranslatedObjects 4 1} -- -- smi2EventForwardingDiscriminatorEntry OBJECT-TYPE -- ::= {smi2TranslatedObjects 4 1 1} -- -- Smi2EventForwardingDiscriminatorEntry ::= SEQUENCE -- { ... other attributes ... -- smi2EveForDisDiscriminatorConstruct Complex, -- ... remaining attributes ... } -- -- The DiscriminatorConstruct ATTRIBUTE would be expanded -- as the side table which is shown below. In order to be -- brief, only two component fields of the Discriminator -- Construct are expanded in this example (and & not) -- in order to illustrate CHOICE syntax and Recursion. smi2EveForDisDiscriminatorConstructTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2EveForDisDiscriminatorConstructEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "DiscriminatorConstruct ::= CMISFilter" ::= {smi2TranslatedObjects 4 2} smi2EveForDisDiscriminatorConstructEntry OBJECT-TYPE SYNTAX Smi2EveForDisDiscriminatorConstructEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "This represents an entry in the smi2EveForDisDiscriminatorConstructTable." INDEX {smi2EveForDisTableIndex} -- Note this Index has not been included in this -- example but was shown above in comments. ::= {smi2TranslatedObjects 4 2 1} Smi2EveForDisDiscriminatorConstructEntry ::= SEQUENCE { smi2EveForDisDisConAnd MultiComplex, smi2EveForDisDisConNotRecursion Recursion, smi2EveForDisDisConNotRecursivelyNested RecursivelyNested, smi2EveForDisDisConRowStatus RowStatus Newnan Expires August, 1994 Page A-34 DRAFT February, 1994 } smi2EveForDisDisConAnd OBJECT-TYPE SYNTAX MultiComplex ACCESS read-only STATUS mandatory DESCRIPTION "and IMPLICT SET OF CMISFilter This object corresponds to the and option of the CMISFilter choice. Only one such choice may be present in a table. Setting a new value for this choice implicitly deletes any pre-existing value." -- DEFVAL {smi2EveForDisDisConAndEntry} -- The smi2EveForDisDisConAndTable and smi2EveForDisDisConAndEntry would be -- defined as side tables. There are not expanded here. ::= {smi2TranslatedObjects 4 2 1 1} smi2EveForDisDisConNotRecursion OBJECT-TYPE SYNTAX Recursion ACCESS read-write STATUS mandatory DESCRIPTION "not CMISFilter This object corresponds to the not option of the CMISFilter choice. Only one such choice may be present in a table. Setting a new value for this choice implicitly deletes any pre-existing value." ::= {smi2TranslatedObjects 4 2 1 2} smi2EveForDisDisConNotRecursivelyNested OBJECT-TYPE SYNTAX RecursivelyNested ACCESS read-only STATUS mandatory DESCRIPTION "not CMISFilter This object corresponds to the and option of the CMISFilter choice. Only one such choice may be present in a table. Setting a new value for this choice implicitly deletes any pre-existing value." ::= {smi2TranslatedObjects 4 2 1 3} smi2EveForDisDisConRowStatus OBJECT-TYPE SYNTAX RowStatus ACCESS read-write STATUS mandatory DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 4 2 1 4} END Newnan Expires August, 1994 Page A-35 DRAFT February, 1994 A.3 OUTPUT SNMPV2 MANAGEMENT INFORMATION BASE -- ****************************************************** -- Partial Translation of -- CCITT Rec. X.721 | ISO/IEC 10165-2 : 1992 -- Definition of Management Information (DMI) -- into Internet SNMPv2 MIB -- ****************************************************** MIBsmi2SNMPv2Increment1 DEFINITIONS ::= BEGIN IMPORTS smi2MObjectClass, smi2Package FROM ManagedObjectClassDefinitions {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 0} smi2AttributeID FROM Attribute-ASN1Module {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 1} smi2Notification FROM Notification-ASN1Module {joint-iso-ccitt ms(9) smi(3) part2(2) asn1Module(2) 2} AnyDefinedBy, ChoiceOfIntOrOID, Complex, GraphicString, Pointer, TableIndex, MultiComplex, Recursion, RecursivelyNested, SourceIndicator, Parent FROM IIMComibtransConventions Smi2SpecificIdentifier FROM MIBsmi2ConventionsIncrement1 iimcIIMCOMIBTRANS FROM IimcAssignedOIDs {iso(1) member-body(2) 124 forum(360501) iimcManual(15) iimcModule(0) 1} smi2Translated, smi2TranslatedModules, smi2TranslatedObjects, smi2TranslatedNotifications FROM MIBsmi2ComplianceIncrement1 MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Integer32 FROM SNMPv2-SMI InstancePointer, TimeStamp, RowStatus, TruthValue FROM SNMPv2-TC OBJECT-GROUP FROM SNMPv2-CONF; -- Module Identity Macro mibsmi2SNMPv2Increment1 MODULE-IDENTITY Newnan Expires August, 1994 Page A-36 DRAFT February, 1994 LAST-UPDATED "9310150000Z" ORGANIZATION "Network Management Forum" CONTACT-INFO "AIII Subteam 1201 Mt. Kemble Avenue Morristown, NJ 07960-6628 USA Tel: +1 201-425-1900 Fax: +1 201-425-1515 Email: iimc@thumper.bellcore.com" DESCRIPTION "This module provides a partial translation of CCITT Rec. X.721|ISO/IEC 10165-2:1992, Definition of Management Information (DMI), for use with SNMPv2. WARNING: Currently, this module contains translated SNMPv2 entities corresponding to the DMI alarmRecord managed object class and processingErrorAlarm notification. This is intended to illustrate the translation procedures specified by IIMCOMIBTRANS. The definitions contained in this module (including all object identifer assignments and conformance macros) are intended only as an illustration, and are non- normative. CONFORMANCE CANNOT BE CLAIMED TO THIS MODULE." ::= { smi2TranslatedModules 2 1 } alarmRecord OBJECT-GROUP OBJECTS { smi2AlaRecLoggingTime, smi2AlaRecManagedObjectClass, smi2AlaRecManagedObjectInstance, smi2AlaRecEventType, smi2AlaRecEventTime, smi2AlaRecNotificationIdentifier, smi2AlaRecCorrelatedNotifications, smi2AlaRecAdditionalText, smi2AlaRecAdditionalInformation, smi2AlaRecProbableCause, smi2AlaRecPerceivedSeverity, smi2AlaRecSpecificProblems, smi2AlaRecBackedUpStatus, smi2AlaRecBackUpObject, smi2AlaRecTrendIndication, smi2AlaRecThresholdInfo, smi2AlaRecStateChangeDefinition, smi2AlaRecMonitoredAttributes, smi2AlaRecProposedRepairActions, smi2AlaRecParent, smi2AlaRecRowStatus, smi2AlaRecCorNotNotificationIdentifier, smi2AlaRecCorNotSourceObject, smi2AlaRecCorNotRowStatus, smi2AlaRecAddInfSignificance, Newnan Expires August, 1994 Page A-37 DRAFT February, 1994 smi2AlaRecAddInfInformation, smi2AlaRecAddInfRowStatus, smi2AlaRecSpeProSpecificIdentifier, smi2AlaRecSpeProRowStatus, smi2AlaRecThrInfTriggeredThreshold, smi2AlaRecThrInfObservedValue, smi2AlaRecThrInfThresholdLevelIndUpDown, smi2AlaRecThrInfThresholdLevelIndHigh, smi2AlaRecThrInfThresholdLevelIndLow, smi2AlaRecThrInfArmTime, smi2AlaRecThrInfRowStatus, smi2AlaRecStaChaDefOldAttributeValue, smi2AlaRecStaChaDefNewAttributeValue, smi2AlaRecStaChaDefRowStatus, smi2AlaRecMonAttAttribute, smi2AlaRecMonAttRowStatus, smi2AlaRecProRepActSpecificIdentifier, smi2AlaRecProRepActRowStatus } STATUS current DESCRIPTION "This OBJECT-GROUP represents the MANAGED OBJECT CLASS CCITT Rec. X.721|ISO/IEC 10165- 2:1992:alarmRecord, translated according to the procedures specified by IIMCOMIBTRANS into the OBJECT-TYPE smi2AlarmRecordTable. Refer to the smi2AlarmRecordTable OBJECT-TYPE macro for additional information." REFERENCE "REFMACRO smi2Doc CCITT Rec. X.721|ISO/IEC 10165-2:1992" ::= {smi2TranslatedObjects 1} smi2ProcessingErrorAlarm NOTIFICATION-TYPE OBJECTS { smi2AlaRecManagedObjectInstance, smi2AlaRecEventTime, smi2AlaRecProbableCause, smi2AlaRecPerceivedSeverity } STATUS current DESCRIPTION "This notification type is used to report processing failure in a managed object. This notification carries information associated with an smi2AlarmRecordTable log record. The VarBindList associated with this NOTIFICATION-TYPE may include the following additional information from that log record: smi2AlaRecBackedUpStatus, smi2AlaRecBackUpObject, smi2AlaRecTrendIndication, smi2AlaRecThresholdInfo, smi2AlaRecNotificationIdentifier, smi2AlaRecAdditionalText." REFERENCE Newnan Expires August, 1994 Page A-38 DRAFT February, 1994 "NOTIFICATION smi2Doc:processingErrorAlarm { smi2Notification 10 } FIELD smi2Doc:probableCause MAPS TO smi2AlaRecProbableCause, FIELD smi2Doc:perceivedSeverity MAPS TO smi2AlaRecPerceivedSeverity" ::= { smi2TranslatedNotifications 10 } -- Class Table smi2AlarmRecordTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlarmRecordEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This managed object is used to represent logged information that resulted from alarm notifications or event reports. All objects of this object group are translated from the ISO/CCITT alarmRecord managed object class according to NMF IIMCOMIBTRANS and conform to behavioral requirements that it specifies. alarmRecordBehaviour BEHAVIOUR DEFINED AS This managed object is used to represent logged information that resulted from alarm notifications or event reports. logRecordBehaviour BEHAVIOUR DEFINED AS This managed object represents the information stored in the logs." REFERENCE "MANAGED OBJECT CLASS CCITT Rec. X.721|ISO/IEC 10165-2:1992:alarmRecord { smi2MObjectClass 1 }" ::= {smi2TranslatedObjects 1 1} -- Class Entry smi2AlarmRecordEntry OBJECT-TYPE SYNTAX Smi2AlarmRecordEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This represents an entry in the smi2AlarmRecordTable." INDEX {smi2AlaRecTableIndex} ::= {smi2TranslatedObjects 1 1 1} Smi2AlarmRecordEntry ::= SEQUENCE { smi2AlaRecTableIndex TableIndex, smi2AlaRecLoggingTime TimeStamp, smi2AlaRecManagedObjectClass ChoiceOfIntOrOID, smi2AlaRecManagedObjectInstance InstancePointer, smi2AlaRecEventType ChoiceOfIntOrOID, smi2AlaRecEventTime TimeStamp, Newnan Expires August, 1994 Page A-39 DRAFT February, 1994 smi2AlaRecNotificationIdentifier Integer32, smi2AlaRecCorrelatedNotifications MultiComplex, smi2AlaRecAdditionalText GraphicString, smi2AlaRecAdditionalInformation MultiComplex, smi2AlaRecProbableCause ChoiceOfIntOrOID, smi2AlaRecPerceivedSeverity PerceivedSeverity, smi2AlaRecSpecificProblems MultiComplex, smi2AlaRecBackedUpStatus TruthValue, smi2AlaRecBackUpObject InstancePointer, smi2AlaRecTrendIndication TrendIndication, smi2AlaRecThresholdInfo Complex, smi2AlaRecStateChangeDefinition MultiComplex, smi2AlaRecMonitoredAttributes MultiComplex, smi2AlaRecProposedRepairActions MultiComplex, smi2AlaRecParent Parent, smi2AlaRecRowStatus RowStatus } -- Class Entry Columns smi2AlaRecTableIndex OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "This is an index of the smi2AlarmRecordTable." ::= {smi2TranslatedObjects 1 1 1 1} smi2AlaRecLoggingTime OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the loggingTime attribute type are specified in the Logging Time attribute in CCITT Rec. X.735|ISO/IEC 10164-6." REFERENCE "PACKAGE smi2Doc:logRecordPackage ATTRIBUTE smi2Doc:loggingTime { smi2AttributeID 59 }" ::= {smi2TranslatedObjects 1 1 1 2} smi2AlaRecManagedObjectClass OBJECT-TYPE SYNTAX ChoiceOfIntOrOID MAX-ACCESS read-only STATUS current DESCRIPTION "The managedObjectClass attribute type is specified to allow filtering of the Managed Object Class parameter when event reports are logged as records." REFERENCE "PACKAGE smi2Doc:eventLogRecordPackage ATTRIBUTE smi2Doc:managedObjectClass { smi2AttributeID 60 }" ::= {smi2TranslatedObjects 1 1 1 3} Newnan Expires August, 1994 Page A-40 DRAFT February, 1994 smi2AlaRecManagedObjectInstance OBJECT-TYPE SYNTAX InstancePointer MAX-ACCESS read-only STATUS current DESCRIPTION "The managedObjectInstance attribute type is specified to allow filtering of the Managed Object Instance parameter when event reports are logged as records." REFERENCE "PACKAGE smi2Doc:eventLogRecordPackage ATTRIBUTE smi2Doc:managedObjectInstance { smi2AttributeID 61 }" ::= {smi2TranslatedObjects 1 1 1 4} smi2AlaRecEventType OBJECT-TYPE SYNTAX ChoiceOfIntOrOID MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the eventType attribute type are specified in the Event type parameter in CCITT Rec. X.710|ISO/IEC 9595." REFERENCE "PACKAGE smi2Doc:eventLogRecordPackage ATTRIBUTE smi2Doc:eventType { smi2AttributeID 14 }" ::= {smi2TranslatedObjects 1 1 1 5} smi2AlaRecEventTime OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the eventTime attribute type are specified in the Event Time parameter in CCITT Rec. X.710|ISO/IEC 9595. This object belongs to the eventTimePackage package, present if the event time parameter was present in the received event report." REFERENCE "PACKAGE smi2Doc:eventTimePackage {smi2Package 11} ATTRIBUTE smi2Doc:eventTime { smi2AttributeID 13 }" ::= {smi2TranslatedObjects 1 1 1 6} smi2AlaRecNotificationIdentifier OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the notificationIdentifier attribute type are specified in the Notification identifier attribute in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the notificationIdentifierPackage package, present if the Newnan Expires August, 1994 Page A-41 DRAFT February, 1994 notification Identifier parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses." REFERENCE "PACKAGE smi2Doc:notificationIdentifierPackage {smi2Package 24} ATTRIBUTE smi2Doc:notificationIdentifier { smi2AttributeID 16 }" ::= {smi2TranslatedObjects 1 1 1 7} smi2AlaRecCorrelatedNotifications OBJECT-TYPE SYNTAX MultiComplex MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the correlatedNotifications attribute type are specified in the Correlated Notifications parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the correlatedNotificationsPackage package, present if the correlatedNotifications parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses." REFERENCE "PACKAGE smi2Doc:correlatedNotificationsPackage {smi2Package 23} ATTRIBUTE smi2Doc:correlatedNotifications { smi2AttributeID 12 }" DEFVAL {smi2AlaRecCorrelatedNotificationsEntry} ::= {smi2TranslatedObjects 1 1 1 8} smi2AlaRecAdditionalText OBJECT-TYPE SYNTAX GraphicString MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the additionalText attribute type are specified in the Additional Text parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the additionalTextPackage package, present if the Additional text parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses." REFERENCE "PACKAGE smi2Doc:additionalTextPackage {smi2Package 19} ATTRIBUTE smi2Doc:additionalText { smi2AttributeID 7 }" ::= {smi2TranslatedObjects 1 1 1 9} smi2AlaRecAdditionalInformation Newnan Expires August, 1994 Page A-42 DRAFT February, 1994 OBJECT-TYPE SYNTAX MultiComplex MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the additionalInformation attribute type are specified in the Additional Information parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the additionalInformationPackage package, present if the Additional information parameter is present in the notification or event report corresponding to the instance of an event record or an instance of its subclasses." REFERENCE "PACKAGE smi2Doc:additionalInformationPackage {smi2Package 18} ATTRIBUTE smi2Doc:additionalInformation { smi2AttributeID 6 }" DEFVAL {smi2AlaRecAdditionalInformationEntry} ::= {smi2TranslatedObjects 1 1 1 10} smi2AlaRecProbableCause OBJECT-TYPE SYNTAX ChoiceOfIntOrOID MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the probableCause attribute type are specified in the Probable Cause parameter in CCITT Rec. X.733|ISO/IEC 10164-4." REFERENCE "PACKAGE smi2Doc:alarmRecordPackage ATTRIBUTE smi2Doc:probableCause { smi2AttributeID 18 }" ::= {smi2TranslatedObjects 1 1 1 11} smi2AlaRecPerceivedSeverity OBJECT-TYPE SYNTAX PerceivedSeverity MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the perceivedSeverity attribute type are specified in the Perceived Severity parameter in CCITT Rec. X.733|ISO/IEC 10164-4. ENUMERATED maps to INTEGER, value (0) maps to (32767)." REFERENCE "PACKAGE smi2Doc:alarmRecordPackage ATTRIBUTE smi2Doc:perceivedSeverity { smi2AttributeID 17 }" ::= {smi2TranslatedObjects 1 1 1 12} PerceivedSeverity ::= INTEGER { Newnan Expires August, 1994 Page A-43 DRAFT February, 1994 indeterminate (32767), critical (1), major (2), minor (3), warning (4), cleared (5) } smi2AlaRecSpecificProblems OBJECT-TYPE SYNTAX MultiComplex MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the specificProblems attribute type are specified in the Specific Problems parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the specificProblemsPackage package, present if the Specific problems parameter is present in the alarm notification or event report corresponding to the instance of alarm record." REFERENCE "PACKAGE smi2Doc:specificProblemsPackage {smi2Package 1} ATTRIBUTE smi2Doc:specificProblems { smi2AttributeID 27 }" DEFVAL {smi2AlaRecSpecificProblemsEntry} ::= {smi2TranslatedObjects 1 1 1 13} smi2AlaRecBackedUpStatus OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the backedUpStatus attribute type are specified in the Backed-up Status parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the backedUpStatusPackage package, present if the Backed up status parameter is present in the alarm notification or event report corresponding to the instance of alarm record." REFERENCE "PACKAGE smi2Doc:backedUpStatusPackage {smi2Package 2} ATTRIBUTE smi2Doc:backedUpStatus { smi2AttributeID 41 }" ::= {smi2TranslatedObjects 1 1 1 14} smi2AlaRecBackUpObject OBJECT-TYPE SYNTAX InstancePointer MAX-ACCESS read-only STATUS current Newnan Expires August, 1994 Page A-44 DRAFT February, 1994 DESCRIPTION "The semantics of the backUpObject attribute type are specified in the Back-Up Object relationship attribute in CCITT Rec. X.732|ISO/IEC 10164-3. This attribute is also used in CCITT Rec. X.734|ISO/IEC 10164-4. This object belongs to the backUpObjectPackage package, present if the Backup object parameter is present in the alarm notification or event report corresponding to the instance of alarm record. A NULL value shall be indicated by {0 0}" REFERENCE "PACKAGE smi2Doc:backUpObjectPackage {smi2Package 3} ATTRIBUTE smi2Doc:backUpObject {smi2AttributeID 40}" ::= {smi2TranslatedObjects 1 1 1 15} smi2AlaRecTrendIndication OBJECT-TYPE SYNTAX TrendIndication MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the trendIndication attribute type are specified in the Trend Indication parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the trendIndicationPackage package, present if the Trend indication parameter is present in the alarm notification or event report corresponding to the instance of alarm record. ENUMERATED maps to INTEGER, value (0) maps to (32767)." REFERENCE "PACKAGE smi2Doc:trendIndicationPackage {smi2Package 4} ATTRIBUTE smi2Doc:trendIndication {smi2AttributeID 30}" ::= {smi2TranslatedObjects 1 1 1 16} TrendIndication ::= INTEGER { lessSevere (32767), noChange (1), moreSevere (2) } smi2AlaRecThresholdInfo OBJECT-TYPE SYNTAX Complex MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the thresholdInfo attribute type are specified in the Threshold Info parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the thresholdInfoPackage package, present if the Newnan Expires August, 1994 Page A-45 DRAFT February, 1994 value for probableCause attribute is thresholdCrossed." REFERENCE "PACKAGE smi2Doc:thresholdInfoPackage {smi2Package 5} ATTRIBUTE smi2Doc:thresholdInfo {smi2AttributeID 30}" DEFVAL {smi2AlaRecThresholdInfoEntry} ::= {smi2TranslatedObjects 1 1 1 17} smi2AlaRecStateChangeDefinition OBJECT-TYPE SYNTAX MultiComplex MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the stateChangeDefinition attribute type are specified in the State change definition parameter in CCITT Rec. X.731|ISO/IEC 10164-2. This object belongs to the stateChangeDefinitionPackage package, present if there is a state transition for the states defined in State Management Function, corresponding to the alarm type specified in the alarm record." REFERENCE "PACKAGE smi2Doc:stateChangeDefinitionPackage {smi2Package 6} ATTRIBUTE smi2Doc:stateChangeDefinition {smi2AttributeID 28}" DEFVAL {smi2AlaRecStateChangeDefinitionEntry} ::= {smi2TranslatedObjects 1 1 1 18} smi2AlaRecMonitoredAttributes OBJECT-TYPE SYNTAX MultiComplex MAX-ACCESS read-only STATUS current DESCRIPTION "The semantics of the monitoredAttributes attribute type are specified in the Monitored Attributes parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the monitoredAttributesPackage package, present if the monitoredAttributes parameter is present in the alarm notification or event report corresponding to the instance of alarm record." REFERENCE "PACKAGE smi2Doc:monitoredAttributesPackage {smi2Package 7} ATTRIBUTE smi2Doc:monitoredAttributes {smi2AttributeID 15}" DEFVAL {smi2AlaRecMonitoredAttributesEntry} ::= {smi2TranslatedObjects 1 1 1 19} smi2AlaRecProposedRepairActions OBJECT-TYPE SYNTAX MultiComplex MAX-ACCESS read-only STATUS current Newnan Expires August, 1994 Page A-46 DRAFT February, 1994 DESCRIPTION "The semantics of the proposedRepairActions attribute type are specified in the Proposed Repair Actions parameter in CCITT Rec. X.733|ISO/IEC 10164-4. This object belongs to the proposedRepairActionsPackage package, present if the proposedRepairActions parameter is present in the alarm notification or event report corresponding to the instance of alarm record." REFERENCE "PACKAGE smi2Doc:proposedRepairActionsPackage {smi2Package 8} ATTRIBUTE smi2Doc:proposedRepairActions {smi2AttributeID 19}" DEFVAL {smi2AlaRecProposedRepairActionsEntry} ::= {smi2TranslatedObjects 1 1 1 20} smi2AlaRecParent OBJECT-TYPE SYNTAX Parent MAX-ACCESS read-only STATUS current DESCRIPTION "This object is a pointer to the parent of this entry." ::= {smi2TranslatedObjects 1 1 1 21} smi2AlaRecRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 1 1 22} -- Alarm Record Correlated Notifications Side Table smi2AlaRecCorrelatedNotificationsTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecCorrelatedNotificationsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "CorrelatedNotifications ::= SET OF SEQUENCE { correlatedNotifications SET OF NotificationIdentifier, sourceObject ObjectInstance OPTIONAL} HUMAN DECISION: Simplify this syntax as SET OF SEQUENCE {NotificationIdentifer, ObjectInstance}. This preserves all information while reducing the nesting of side tables. NotificationIdentifiers for the same ObjectInstance may appear as multiple elements of this SET (side table entries)." ::= {smi2TranslatedObjects 1 2} smi2AlaRecCorrelatedNotificationsEntry OBJECT-TYPE Newnan Expires August, 1994 Page A-47 DRAFT February, 1994 SYNTAX Smi2AlaRecCorrelatedNotificationsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This represents an entry in the smi2AlaRecCorrelatedNotificationsTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecCorNotTableIndex} ::= {smi2TranslatedObjects 1 2 1} Smi2AlaRecCorrelatedNotificationsEntry ::= SEQUENCE { smi2AlaRecCorNotTableIndex TableIndex, smi2AlaRecCorNotNotificationIdentifier Integer32, smi2AlaRecCorNotSourceObject InstancePointer, smi2AlaRecCorNotRowStatus RowStatus } smi2AlaRecCorNotTableIndex OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "This is an index of the smi2AlaRecCorrelatedNotificationsTable." ::= {smi2TranslatedObjects 1 2 1 1} smi2AlaRecCorNotNotificationIdentifier OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "NotificationIdentifier ::= INTEGER" ::= {smi2TranslatedObjects 1 2 1 2} smi2AlaRecCorNotSourceObject OBJECT-TYPE SYNTAX InstancePointer MAX-ACCESS read-only STATUS current DESCRIPTION "The syntax ObjectInstance is imported from X.500. This object corresponds to the sourceObject option, which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 2 1 3} smi2AlaRecCorNotRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current Newnan Expires August, 1994 Page A-48 DRAFT February, 1994 DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 2 1 4} -- Alarm Record Additional Information Side Table smi2AlaRecAdditionalInformationTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecAdditionalInformationEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "SET OF ManagementExtension ManagementExtension ::= SEQUENCE { identifier OBJECT IDENTIFIER, significance BOOLEAN, information ANY DEFINED BY OBJECT IDENTIFIER}" ::= {smi2TranslatedObjects 1 3} smi2AlaRecAdditionalInformationEntry OBJECT-TYPE SYNTAX Smi2AlaRecAdditionalInformationEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This represents an entry in the smi2AlaRecAdditionalInformationTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecAddInfTableIndex} ::= {smi2TranslatedObjects 1 3 1} Smi2AlaRecAdditionalInformationEntry ::= SEQUENCE { smi2AlaRecAddInfTableIndex TableIndex, smi2AlaRecAddInfSignificance TruthValue, smi2AlaRecAddInfInformation AnyDefinedBy, smi2AlaRecAddInfRowStatus RowStatus } smi2AlaRecAddInfTableIndex OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "This is an index of the smi2AlaRecAdditionalInformationTable." ::= {smi2TranslatedObjects 1 3 1 1} smi2AlaRecAddInfSignificance OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "significance BOOLEAN DEFAULT FALSE" Newnan Expires August, 1994 Page A-49 DRAFT February, 1994 DEFVAL {0} ::= {smi2TranslatedObjects 1 3 1 2} smi2AlaRecAddInfInformation OBJECT-TYPE SYNTAX AnyDefinedBy MAX-ACCESS read-only STATUS current DESCRIPTION "information ANY DEFINED BY OBJECT IDENTIFIER This object is a place holder for a construct not supported at the current level of this specification. An implementation (at the current level) shall not populate this value." ::= {smi2TranslatedObjects 1 3 1 3} smi2AlaRecAddInfRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 3 1 4} -- Alarm Record Specific Problems Side Table smi2AlaRecSpecificProblemsTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecSpecificProblemsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "SpecificProblems ::= SET OF SpecificIdentifier" ::= {smi2TranslatedObjects 1 4} smi2AlaRecSpecificProblemsEntry OBJECT-TYPE SYNTAX Smi2AlaRecSpecificProblemsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This represents an entry in the smi2AlaRecSpecificProblemsTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecSpeProTableIndex} ::= {smi2TranslatedObjects 1 4 1} Smi2AlaRecSpecificProblemsEntry ::= SEQUENCE { smi2AlaRecSpeProTableIndex TableIndex, smi2AlaRecSpeProSpecificIdentifier Smi2SpecificIdentifier, smi2AlaRecSpeProRowStatus RowStatus } Newnan Expires August, 1994 Page A-50 DRAFT February, 1994 smi2AlaRecSpeProTableIndex OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "This is an index of the smi2AlaRecSpecificProblemsTable." ::= {smi2TranslatedObjects 1 4 1 1} smi2AlaRecSpeProSpecificIdentifier OBJECT-TYPE SYNTAX Smi2SpecificIdentifier MAX-ACCESS read-only STATUS current DESCRIPTION "Refer to the Smi2SpecificIdentifier textual convention." ::= {smi2TranslatedObjects 1 4 1 2} smi2AlaRecSpeProRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 4 1 3} -- Alarm Record Threshold Info Side Table smi2AlaRecThresholdInfoTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecThresholdInfoEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "ThresholdInfo ::= SEQUENCE {triggeredThreshold AttributeId, observedValue ObservedValue, thresholdLevel [1] ThresholdLevelInd OPTIONAL, armTime [2] GeneralizedTime OPTIONAL} ThresholdLevelInd ::= CHOICE {up [1] SEQUENCE {high ObservedValue, low ObservedValue OPTIONAL} down [2] SEQUENCE {high ObservedValue, low ObservedValue}} HUMAN DECISION: ThresholdLevelInd is treated as if it were SEQUENCE { ThresholdLevelIndUpDown BOOLEAN, ThresholdLevelIndHigh ObservedValue, ThresholdLevelIndLow ObservedValue }. This translation preserves all information while simplifying the number and nesting of side tables." ::= {smi2TranslatedObjects 1 5} smi2AlaRecThresholdInfoEntry OBJECT-TYPE SYNTAX Smi2AlaRecThresholdInfoEntry MAX-ACCESS not-accessible Newnan Expires August, 1994 Page A-51 DRAFT February, 1994 STATUS current DESCRIPTION "This represents an entry in the smi2AlaRecThresholdInfoTable." AUGMENTS {smi2AlarmRecordEntry} ::= {smi2TranslatedObjects 1 5 1} Smi2AlaRecThresholdInfoEntry ::= SEQUENCE { smi2AlaRecThrInfTriggeredThreshold ChoiceOfIntOrOID, smi2AlaRecThrInfObservedValue Integer32, smi2AlaRecThrInfThresholdLevelIndUpDown TruthValue, smi2AlaRecThrInfThresholdLevelIndHigh Integer32, smi2AlaRecThrInfThresholdLevelIndLow Integer32, smi2AlaRecThrInfArmTime TimeStamp, smi2AlaRecThrInfRowStatus RowStatus } smi2AlaRecThrInfTriggeredThreshold OBJECT-TYPE SYNTAX ChoiceOfIntOrOID MAX-ACCESS read-only STATUS current DESCRIPTION "AttributeId ::= CHOICE {INTEGER, REAL}" ::= {smi2TranslatedObjects 1 5 1 2} smi2AlaRecThrInfObservedValue OBJECT-TYPE SYNTAX Integer32 UNITS "Scaled to represent REAL by factor 100 (i.e., INTEGER value 3 is represented as 300, REAL value .03 is represented as 3." MAX-ACCESS read-only STATUS current DESCRIPTION "ObservedValue ::= CHOICE {INTEGER, REAL}" ::= {smi2TranslatedObjects 1 5 1 3} smi2AlaRecThrInfThresholdLevelIndUpDown OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True means Up; False means Down. HUMAN DECISION: Refer to smi2AlaRecThresholdInfoTable for rationale. This object corresponds to the thresholdLevel option, Newnan Expires August, 1994 Page A-52 DRAFT February, 1994 which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 5 1 4} smi2AlaRecThrInfThresholdLevelIndHigh OBJECT-TYPE SYNTAX Integer32 UNITS "Scaled to represent REAL by factor 100 (i.e., INTEGER value 3 is represented as 300, REAL value .03 is represented as 3. This object corresponds to the thresholdLevel option, which may or may not be present in a given table entry." MAX-ACCESS read-only STATUS current DESCRIPTION "ObservedValue ::= CHOICE {INTEGER, REAL}" ::= {smi2TranslatedObjects 1 5 1 5} smi2AlaRecThrInfThresholdLevelIndLow OBJECT-TYPE SYNTAX Integer32 UNITS "Scaled to represent REAL by factor 100 (i.e., INTEGER value 3 is represented as 300, REAL value .03 is represented as 3." MAX-ACCESS read-only STATUS current DESCRIPTION "ObservedValue ::= CHOICE {INTEGER, REAL}" ::= {smi2TranslatedObjects 1 5 1 6} smi2AlaRecThrInfArmTime OBJECT-TYPE SYNTAX TimeStamp MAX-ACCESS read-only STATUS current DESCRIPTION "armTime GeneralizedTime OPTIONAL This object corresponds to the armTime option, which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 5 1 7} smi2AlaRecThrInfRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 5 1 8} -- Alarm Record State Change Definition Side Table smi2AlaRecStateChangeDefinitionTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecStateChangeDefinitionEntry MAX-ACCESS not-accessible Newnan Expires August, 1994 Page A-53 DRAFT February, 1994 STATUS current DESCRIPTION "StateChangeDefinition ::= AttributeValueChangeDefinition AttributeValueChangeDefinition ::= SET OF SEQUENCE { attributeID attributeId, oldAttributeValue [1] ANY DEFINED BY attributeID OPTIONAL, newAttributeValue [2] ANY DEFINED BY attributeID}" ::= {smi2TranslatedObjects 1 6} smi2AlaRecStateChangeDefinitionEntry OBJECT-TYPE SYNTAX Smi2AlaRecStateChangeDefinitionEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This represents an entry in the smi2AlaRecStateChangeDefinitionTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecStaChaDefTableIndex} ::= {smi2TranslatedObjects 1 6 1} Smi2AlaRecStateChangeDefinitionEntry ::= SEQUENCE { smi2AlaRecStaChaDefTableIndex TableIndex, smi2AlaRecStaChaDefOldAttributeValue AnyDefinedBy, smi2AlaRecStaChaDefNewAttributeValue AnyDefinedBy, smi2AlaRecStaChaDefRowStatus RowStatus } smi2AlaRecStaChaDefTableIndex OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "This is an index of the smi2AlaRecStateChangeDefinitionTable." ::= {smi2TranslatedObjects 1 6 1 1} smi2AlaRecStaChaDefOldAttributeValue OBJECT-TYPE SYNTAX AnyDefinedBy MAX-ACCESS read-only STATUS current DESCRIPTION "oldAttributeValue [1] ANY DEFINED BY attributeID OPTIONAL This object corresponds to the oldAttributeValue option, which may or may not be present in a given table entry." ::= {smi2TranslatedObjects 1 6 1 2} smi2AlaRecStaChaDefNewAttributeValue OBJECT-TYPE Newnan Expires August, 1994 Page A-54 DRAFT February, 1994 SYNTAX AnyDefinedBy MAX-ACCESS read-only STATUS current DESCRIPTION "newAttributeValue [1] ANY DEFINED BY attributeID" ::= {smi2TranslatedObjects 1 6 1 3} smi2AlaRecStaChaDefRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 6 1 4} -- Alarm Record Monitored Attributes Side Table smi2AlaRecMonitoredAttributesTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecMonitoredAttributesEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "MonitoredAttributes ::= SET OF Attribute" ::= {smi2TranslatedObjects 1 7} smi2AlaRecMonitoredAttributesEntry OBJECT-TYPE SYNTAX Smi2AlaRecMonitoredAttributesEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This represents an entry in the smi2AlaRecMonitoredAttributesTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecMonAttTableIndex} ::= {smi2TranslatedObjects 1 7 1} Smi2AlaRecMonitoredAttributesEntry ::= SEQUENCE { smi2AlaRecMonAttTableIndex TableIndex, smi2AlaRecMonAttAttribute AnyDefinedBy, smi2AlaRecMonAttRowStatus RowStatus } smi2AlaRecMonAttTableIndex OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "This is an index of the smi2AlaRecMonitoredAttributesTable." ::= {smi2TranslatedObjects 1 7 1 1} smi2AlaRecMonAttAttribute OBJECT-TYPE SYNTAX AnyDefinedBy Newnan Expires August, 1994 Page A-55 DRAFT February, 1994 MAX-ACCESS read-only STATUS current DESCRIPTION "Attribute ::= SEQUENCE {attributeId AttributeId, attributeValue ANY DEFINED BY AttributeId}" ::= {smi2TranslatedObjects 1 7 1 2} smi2AlaRecMonAttRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 7 1 3} -- Alarm Record Proposed Repair Actions Side Table smi2AlaRecProposedRepairActionsTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2AlaRecProposedRepairActionsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "ProposedRepairActions ::= SET OF SpecificIdentifier" ::= {smi2TranslatedObjects 1 8} smi2AlaRecProposedRepairActionsEntry OBJECT-TYPE SYNTAX Smi2AlaRecProposedRepairActionsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This represents an entry in the smi2AlaRecProposedRepairActionsTable." INDEX {smi2AlaRecTableIndex, smi2AlaRecProRepActTableIndex} ::= {smi2TranslatedObjects 1 8 1} Smi2AlaRecProposedRepairActionsEntry ::= SEQUENCE { smi2AlaRecProRepActTableIndex TableIndex, smi2AlaRecProRepActSpecificIdentifier Smi2SpecificIdentifier, smi2AlaRecProRepActRowStatus RowStatus } smi2AlaRecProRepActTableIndex OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION Newnan Expires August, 1994 Page A-56 DRAFT February, 1994 "This is an index of the smi2AlaRecProposedRepairActionsTable." ::= {smi2TranslatedObjects 1 8 1 1} smi2AlaRecProRepActSpecificIdentifier OBJECT-TYPE SYNTAX Smi2SpecificIdentifier MAX-ACCESS read-only STATUS current DESCRIPTION "Refer to the Smi2SpecificIdentifier textual convention." ::= {smi2TranslatedObjects 1 8 1 2} smi2AlaRecProRepActRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 1 8 1 3} -- Discriminator Construct Side Table -- The following table is included to illustrate the concepts -- of choice and recursion. This table is NOT a side table -- which is part of the alarmRecord OBJECT-GROUP. Rather, -- this table would be a side table of another OBJECT-GROUP -- representing the eventForwardingDiscriminator MO CLASS. -- -- eventForwardingDiscriminator OBJECT-GROUP -- ::= {smi2TranslatedObjects 4} -- -- smi2EventForwardingDiscriminatorTable OBJECT-TYPE -- ::= {smi2TranslatedObjects 4 1} -- -- smi2EventForwardingDiscriminatorEntry OBJECT-TYPE -- ::= {smi2TranslatedObjects 4 1 1} -- -- Smi2EventForwardingDiscriminatorEntry ::= SEQUENCE -- { ... other attributes ... -- smi2EveForDisDiscriminatorConstruct Complex, -- ... remaining attributes ... } -- -- The DiscriminatorConstruct ATTRIBUTE would be expanded -- as the side table which is shown below. In order to be -- brief, only two component fields of the Discriminator -- Construct are expanded in this example (and & not) -- in order to illustrate CHOICE syntax and Recursion. smi2EveForDisDiscriminatorConstructTable OBJECT-TYPE SYNTAX SEQUENCE OF Smi2EveForDisDiscriminatorConstructEntry MAX-ACCESS not-accessible STATUS current Newnan Expires August, 1994 Page A-57 DRAFT February, 1994 DESCRIPTION "DiscriminatorConstruct ::= CMISFilter" ::= {smi2TranslatedObjects 4 2} smi2EveForDisDiscriminatorConstructEntry OBJECT-TYPE SYNTAX Smi2EveForDisDiscriminatorConstructEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "This represents an entry in the smi2EveForDisDiscriminatorConstructTable." AUGMENTS {smi2EventForwardingDiscriminatorEntry} -- Note this Entry has not been included in this -- example but was shown above in comments. ::= {smi2TranslatedObjects 4 2 1} Smi2EveForDisDiscriminatorConstructEntry ::= SEQUENCE { smi2EveForDisDisConAnd MultiComplex, smi2EveForDisDisConNotRecursion Recursion, smi2EveForDisDisConNotRecursivelyNested RecursivelyNested, smi2EveForDisDisConRowStatus RowStatus } smi2EveForDisDisConAnd OBJECT-TYPE SYNTAX MultiComplex MAX-ACCESS read-only STATUS current DESCRIPTION "and IMPLICT SET OF CMISFilter This object corresponds to the and option of the CMISFilter choice. Only one such choice may be present in a table. Setting a new value for this choice implicitly deletes any pre-existing value." -- DEFVAL {smi2EveForDisDisConAndEntry} -- The smi2EveForDisDisConAndTable and smi2EveForDisDisConAndEntry would be -- defined as side tables. There are not expanded here. ::= {smi2TranslatedObjects 4 2 1 1} smi2EveForDisDisConNotRecursion OBJECT-TYPE SYNTAX Recursion MAX-ACCESS read-write STATUS current DESCRIPTION "not CMISFilter This object corresponds to the not option of the CMISFilter choice. Only one such choice may be present in a table. Setting a new value for this choice implicitly deletes any pre-existing value." ::= {smi2TranslatedObjects 4 2 1 2} smi2EveForDisDisConNotRecursivelyNested OBJECT-TYPE Newnan Expires August, 1994 Page A-58 DRAFT February, 1994 SYNTAX RecursivelyNested MAX-ACCESS read-only STATUS current DESCRIPTION "not CMISFilter This object corresponds to the and option of the CMISFilter choice. Only one such choice may be present in a table. Setting a new value for this choice implicitly deletes any pre-existing value." ::= {smi2TranslatedObjects 4 2 1 3} smi2EveForDisDisConRowStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry." ::= {smi2TranslatedObjects 4 2 1 4} END A.4 OUTPUT TEXTUAL-CONVENTIONS MACROS -- ****************************************************** -- Example Textual Conventions Module for -- CCITT Rec. X.721 | ISO/IEC 10165-2 : 1992 -- Definition of Management Information (DMI) -- Translated into Internet SNMPv2 MIB -- ****************************************************** MIBsmi2ConventionsIncrement1 DEFINITIONS ::= BEGIN IMPORTS ChoiceOfIntOrOID FROM IIMComibtransConventions smi2TranslatedModules FROM MIBsmi2ComplianceIncrement1 MODULE-IDENTITY FROM SNMPv2-SMI; -- Module Identity Macro mibsmi2ConventionsIncrement1 MODULE-IDENTITY LAST-UPDATED "9310150000Z" ORGANIZATION "Network Management Forum" CONTACT-INFO "AIII Subteam 1201 Mt. Kemble Avenue Morristown, NJ 07960-6628 USA Tel: +1 201-425-1900 Newnan Expires August, 1994 Page A-59 DRAFT February, 1994 Fax: +1 201-425-1515 Email: iimc@thumper.bellcore.com" DESCRIPTION "This module provides textual conventions for a partial translation of CCITT Rec. X.721|ISO/IEC 10165-2:1992, Definition of Management Information (DMI). WARNING: Currently, this module contains textual conventions used by the translated DMI alarmRecord managed object class and processingErrorAlarm notification. This is intended to illustrate the translation procedures specified by IIMCOMIBTRANS. The definitions contained in this module (including all object identifer assignments) are intended only as an illustration, and are non-normative. CONFORMANCE CANNOT BE CLAIMED TO THIS MODULE." ::= { smi2TranslatedModules 3 1 } -- The following textual convention is for illustration. In a -- full translation of smi2, many other textual conventions -- would be generated for reused attributes such as -- LoggingTime, ManagedObjectClass, ManagedObjectInstance, and -- EventType, as well as generic state/relationship attributes. Smi2SpecificIdentifier ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "SpecificIdentifier ::= CHOICE {OBJECT IDENTIFIER, INTEGER}" SYNTAX ChoiceOfIntOrOID END A.5 OUTPUT MODULE-COMPLIANCE MACRO -- ****************************************************** -- Example Compliance Module for -- CCITT Rec. X.721 | ISO/IEC 10165-2 : 1992 -- Definition of Management Information (DMI) -- Translated into Internet SNMPv2 MIB -- ****************************************************** MIBsmi2ComplianceIncrement1 DEFINITIONS ::= BEGIN IMPORTS iimcIIMCOMIBTRANS FROM IimcAssignedOIDs {iso(1) member-body(2) 124 forum(360501) iimcManual(15) iimcModule(0) 1} MODULE-COMPLIANCE, MODULE-IDENTITY Newnan Expires August, 1994 Page A-60 DRAFT February, 1994 FROM SNMPv2-CONF; -- OBJECT IDENTIFIER Assignments smi2Translated -- output registry (place holder) OBJECT IDENTIFIER ::= {?} smi2TranslatedModules -- output registry for MODULEs OBJECT IDENTIFIER ::= {smi2Translated 2} smi2TranslatedObjects -- output registry for OBJECT CLASS OBJECT IDENTIFIER ::= {smi2Translated 3} smi2TranslatedNotifications -- output registry for NOTIFICATION OBJECT IDENTIFIER ::= {smi2Translated 10} -- Module Identity Macro mibsmi2CompilanceIncrement1 MODULE-IDENTITY LAST-UPDATED "9310150000Z" ORGANIZATION "Network Management Forum" CONTACT-INFO "AIII Subteam 1201 Mt. Kemble Avenue Morristown, NJ 07960-6628 USA Tel: +1 201-425-1900 Fax: +1 201-425-1515 Email: iimc@thumper.bellcore.com" DESCRIPTION "This module provides a MODDULE-COMPLIANCE macro for the partial translation of CCITT Rec. X.721|ISO/IEC 10165-2:1992, Definition of Management Information (DMI). WARNING: The definitions contained in this module (including all object identifer assignments and conformance macros) are intended only as an illustration, and are non-normative. CONFORMANCE CANNOT BE CLAIMED TO THIS MODULE." ::= { smi2TranslatedModules 0 0 1 } mibsmi2ComplianceStatementIncrement1 MODULE-COMPLIANCE STATUS current DESCRIPTION "BEGINPARSE I. INPUTS TO THE TRANSLATION PROCESS The input class subtree and associated output class subtree for this module are: INPUT: smi2MObjectClass OUTPUT: smi2TranslatedObjects (place holder) The associated input and output notification subtrees for this module are: Newnan Expires August, 1994 Page A-61 DRAFT February, 1994 INPUT: smi2Notification OUTPUT: smi2TranslatedNotifications (place holder) The associated input and output module subtrees for this module are: INPUT: asn1Module OUTPUT: smi2TranslatedModules (place holder) The associated input and output ANY discriminator subtrees for this module are: Not Applicable. The document(s) providing input specifications for the translated module(s) are: CCITT Rec. X.721|ISO/IEC 10165-2:1992, Definition of Management Information (DMI) The used to generate the translated module(s) is: smi2 II. EXCEPTIONS TO THE TRANSLATION PROCESS Following are the cases where a 'natural key' is substituted for the default (arbitrary integer index): Not Applicable. Following are cases for which output syntax differs from the specified mapping for the input syntax: 1. smi2AlaRecCorrelatedNotificationsTable The CorrelatedNotifications syntax has been flattened to reduce table nesting. 2. smi2AlaRecThresholdInfoTable The ThresholdLevelInd syntax has been flattened to reduce table nesting. Following are cases in which the specified translation procedure cannot accommodate the values permitted by the base specification: 1. smi2AlaRecPerceivedSeverity indeterminate(0) mapped to 32767 2. smi2AlaRecTrendIndication lessSevere(0) mapped to 32767 Following are cases for which the translation procedure would result in duplicate labels: Not Applicable. Human judgement has identified that each of the following ANY DEFINED BY constructs resolve to a single option, treated as if that syntactical option were referenced directly: Newnan Expires August, 1994 Page A-62 DRAFT February, 1994 Not Applicable. Following are cases for which the specified translation would result in duplicated values (e.g., for named INTEGER types), and the alternative values used: Not Applicable. Following are other ways in which the translated MIB module does not comply with stated translation procedures: This translation is incomplete, dealing with a subset input specification, and is provided for illustration purposes only. ENDPARSE" REFERENCE "CCITT Rec. X.721|ISO/IEC 10165-2:1992" MODULE MIBsmiSNMPv2 GROUP alarmRecord DESCRIPTION "The alarmRecord group is conditionally mandatory for systems which implement the processingErrorAlarm notification and/or log record specified by CCITT Rec. X.721|ISO/IEC 10165-2:1992." MODULE MIBsmiSNMPv1 GROUP alarmRecord DESCRIPTION "The alarmRecord group usage is the same for both SNMPv1 and SNMPv2 frameworks." -- other groups listed here in a full translation ::= {smi2TranslatedModules 0 1 1} END A.6 OUTPUT AGENT-CAPABILITIES MACRO -- Example Agent Capabilities Macro -- The following macro is an example of an AGENT-CAPABILITIES -- macro that a vendor might supply with an implementation -- of this translated MIB. exampleAgent AGENT-CAPABILITIES PRODUCT-RELEASE "Specific Agent Product Release" STATUS current DESCRIPTION "This implementation complies with any textual conventions specified by IIMComibtransConventions and used by MIBsmi2SNMPv2. Specific Agent Product Description..." -- SUPPORTS IIMComibtransConventions -- INCLUDES { no groups, only conventions } SUPPORTS MIBsmi2SNMPv2 Newnan Expires August, 1994 Page A-63 DRAFT February, 1994 INCLUDES { alarmRecord } -- VARIATION clauses are included as needed here ::= { 0 0 0 } -- In an actual implementation, the this would be a unique -- OID value assigned to the agent implementation by the vendor A.7 APPLICABILITY OF MOCS Currently, [7] does not contain a MOCS proforma corresponding to the DMI input MIB. Instead, draft MOCS proformas corresponding to DMI objects are being progressed as addenda to the Systems Management Function base standards ISO10164-1,2,3,4,5,6,7. A supplier wishing to claim conformance to the translated DMI MIB could obtain MOCS proforma tables from the relevant draft addenda. Newnan Expires August, 1994 Page A-64 DRAFT February, 1994 ANNEX B (NORMATIVE): SUPPORTING MODULES B.1. SNMPV1 SUPPORT OBJECTS IIMComibtransSptSNMPv1 DEFINITIONS ::= BEGIN IMPORTS omibtransSpt FROM IIMComibtransSptCompliance Pointer, ClassInstancePointer, Parent, TableIndex FROM IIMComibtransConventions InstancePointer, TruthValue FROM SNMPv2-TC OBJECT-TYPE, internet FROM RFC1155-SMI; -- The registration of this ASN.1 module is: -- { omibtransSpt 0 1 } -- ********************************************************** -- -- This module contains the following supportive tables: -- -- * Child Table -- -- * DestroyObject Table -- -- * NameBinding Table. -- -- * TableIndex Table. -- -- * TrapSuppression Table -- -- These tables comply with standard SNMPv2 textual -- conventions and additional textual conventions -- specified in IIMComibtransSptSNMPv2. -- -- Note that OBJECT-GROUPs are registered using a different -- registration structure than is used for translated MIBs. -- -- ********************************************************** -- children OBJECT-GROUP -- OBJECTS{ omibtransSptChild } -- STATUS current -- DESCRIPTION "See the description of omibtransSptChildTable below." Newnan Expires August, 1994 Page B-1 DRAFT February, 1994 -- ::= { omibtransSpt 1 0} omibtransSptChildTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptChildEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Provides a means to locate class instances that are immediately subordinate to a given class instance. As such, provides a subset of the CMIS scoping capability." ::= { omibtransSpt 1 } omibtransSptChildEntry OBJECT-TYPE SYNTAX OmibtransSptChildEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Entry of omibtransSptChildTable." INDEX { omibtransSptParent, omibtransSptChildIndex } ::= { omibtransSptChildTable 1 } OmibtransSptChildEntry ::= SEQUENCE { omibtransSptParent OBJECT IDENTIFIER, omibtransSptChildIndex INTEGER, omibtransSptChild OBJECT IDENTIFIER } omibtransSptParent OBJECT-TYPE SYNTAX Parent ACCESS not-accessible STATUS mandatory DESCRIPTION "Supplies the ClassInstancePointer for a class entry." ::= { omibtransSptChildEntry 1 } omibtransSptChildIndex OBJECT-TYPE SYNTAX TableIndex ACCESS not-accessible STATUS mandatory DESCRIPTION "Supplies unique table indices for different child entries." ::= { omibtransSptChildEntry 2 } omibtransSptChild OBJECT-TYPE SYNTAX ClassInstancePointer ACCESS read-only STATUS mandatory DESCRIPTION Newnan Expires August, 1994 Page B-2 DRAFT February, 1994 "Holds ClassInstancePointers for child entries, i.e., class entries that are immediately subordinate to the parent class entry." ::= { omibtransSptChildEntry 3 } -- ********************************************************** -- destruction OBJECT-GROUP -- OBJECTS{ omibtransSptDestroyObject } -- STATUS current -- DESCRIPTION "See the description of omibtransSptDestroyObjectTable -- below." -- ::= { omibtransSpt 2 0} omibtransSptDestroyObjectTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptDestroyObjectEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Provides a means to delete (make not present) a scalar object or columnar entry. One use of this is to destroy an object corresponding to OPTIONAL syntax that is no longer wanted." ::= { omibtransSpt 2 } omibtransSptDestroyObjectEntry OBJECT-TYPE SYNTAX OmibtransSptDestroyObjectEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Entry of omibtransSptDestroyObjectTable." INDEX { omibtransSptDestroyObjectIndex } ::= { omibtransSptDestroyObjectTable 1 } OmibtransSptDestroyObjectEntry ::= SEQUENCE { omibtransSptDestroyObjectIndex OBJECT IDENTIFIER, omibtransSptDestroyObject INTEGER } omibtransSptDestroyObjectIndex OBJECT-TYPE SYNTAX Pointer ACCESS not-accessible STATUS mandatory DESCRIPTION "This object points to the scalar object or columnar entry for which destruction is desired." ::= { omibtransSptDestroyObjectEntry 1 } Newnan Expires August, 1994 Page B-3 DRAFT February, 1994 omibtransSptDestroyObject OBJECT-TYPE SYNTAX TruthValue ACCESS read-write STATUS mandatory DESCRIPTION "When this value is set to true and omibtransSptDestroyObjectIndex points to an object for which destruction is permitted (e.g., a columnar object corresponding to OPTIONAL syntax) the referenced object is destroyed. If destruction is not permitted, error- status of genErr is returned for SNMPv1 or inconsistentValue for SNMPv2. A value of false always results when reading this object." ::= { omibtransSptDestroyObjectEntry 2 } -- ********************************************************** -- nameBinding OBJECT-GROUP -- OBJECTS{ omibtransSptNameBinding } -- STATUS current -- DESCRIPTION "See the description of omibtransSptNameBindingTable -- below." -- ::= { omibtransSpt 3 0} omibtransSptNameBindingTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptNameBindingEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Provides a mechanism for specifying what NAME BINDING to use for manager-initiated creation of a class entry, should there be ambiguity. It also allows discovery of the NAME BINDING in use for a given class entry." ::= { omibtransSpt 3 } omibtransSptNameBindingEntry OBJECT-TYPE SYNTAX OmibtransSptNameBindingEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Entry of omibtransSptNameBindingTable." INDEX { omibtransSptNameBindingIndex } ::= { omibtransSptNameBindingTable 1 } OmibtransSptNameBindingEntry ::= SEQUENCE { omibtransSptNameBindingIndex OBJECT IDENTIFIER, omibtransSptNameBinding Newnan Expires August, 1994 Page B-4 DRAFT February, 1994 OBJECT IDENTIFIER } omibtransSptNameBindingIndex OBJECT-TYPE SYNTAX ClassInstancePointer ACCESS not-accessible STATUS mandatory DESCRIPTION "Provides the ClassInstancePointer to a class entry being created by a management station." ::= { omibtransSptNameBindingEntry 1 } omibtransSptNameBinding OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-write STATUS mandatory DESCRIPTION "Provides the OBJECT IDENTIFIER for the NAME BINDING that will be used when creating a new class instance. For an existing class instance, returns the identifier of the NAME BINDING in use." ::= { omibtransSptNameBindingEntry 2 } -- ********************************************************** -- tableIndex OBJECT-GROUP -- OBJECTS{ omibtransSptTableIndexValue } -- STATUS current -- DESCRIPTION "See the description of omibtransSptTableIndexTable -- below." -- ::= { omibtransSpt 4 0} omibtransSptTableIndexTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptTableIndexEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Provides a class table or side table index for purposes of manager-initiated creation of rows in tables (i.e., new managed object instances or new values for multi-valued attributes). Successive reads to this table return different values that are unique within the scope of the table within that agent. Such values are assigned arbitrarily by the agent, so a manager should make no assumption about the sequence or magnitude of values returned." ::= { omibtransSpt 4 } omibtransSptTableIndexEntry OBJECT-TYPE SYNTAX OmibtransSptTableIndexEntry ACCESS not-accessible STATUS mandatory Newnan Expires August, 1994 Page B-5 DRAFT February, 1994 DESCRIPTION "Entry of omibtransSptTableIndexTable." INDEX { omibtransSptTableIndexIndex } ::= { omibtransSptTableIndexTable 1 } OmibtransSptTableIndexEntry ::= SEQUENCE { omibtransSptTableIndexIndex OBJECT IDENTIFIER, omibtransSptTableIndexValue OBJECT IDENTIFIER } omibtransSptTableIndexIndex OBJECT-TYPE SYNTAX InstancePointer ACCESS not-accessible STATUS mandatory DESCRIPTION "Provides InstancePointer to the conceptual row for which a new entry will be created." ::= { omibtransSptTableIndexEntry 1 } omibtransSptTableIndexValue OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS read-only STATUS mandatory DESCRIPTION "Returns a TableIndex for the indicated conceptual table, to be used in creating a new entry. Thus, this object typically returns different values each time it is read." ::= { omibtransSptTableIndexEntry 2 } -- ********************************************************** -- trapSuppression OBJECT-GROUP -- OBJECTS{ omibtransSptTrapSuppressionFlag } -- STATUS current -- DESCRIPTION "See the description of -- omibtransSptTrapSuppressionTable below." -- ::= { omibtransSpt 5 0} omibtransSptTrapSuppressionTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptTrapSuppressionEntry ACCESS not-accessible STATUS mandatory DESCRIPTION "Provides a means to selectively suppress issuance of traps under the SNMPv1 framework." ::= { omibtransSpt 5 } omibtransSptTrapSuppressionEntry OBJECT-TYPE SYNTAX OmibtransSptTrapSuppressionEntry Newnan Expires August, 1994 Page B-6 DRAFT February, 1994 ACCESS not-accessible STATUS mandatory DESCRIPTION "Entry of omibtransSptTrapSuppressionTable." INDEX { omibtransSptTrapSuppressionEnterprise, omibtransSptTrapSuppressionTrapNumber } ::= { omibtransSptTrapSuppressionTable 1 } OmibtransSptTrapSuppressionEntry ::= SEQUENCE { omibtransSptTrapSuppressionEnterprise OBJECT IDENTIFIER, omibtransSptTrapSuppressionTrapNumber INTEGER, omibtransSptTrapSuppressionFlag INTEGER } omibtransSptTrapSuppressionEnterprise OBJECT-TYPE SYNTAX OBJECT IDENTIFIER ACCESS not-accessible STATUS mandatory DESCRIPTION "Supplies the Enterprise OBJECT IDENTIFIER for the trap of interest." ::= { omibtransSptTrapSuppressionEntry 1 } omibtransSptTrapSuppressionTrapNumber OBJECT-TYPE SYNTAX INTEGER ACCESS not-accessible STATUS mandatory DESCRIPTION "Supplies the trap number (value of the TRAP-TYPE macro) for the trap of interest." ::= { omibtransSptTrapSuppressionEntry 2 } omibtransSptTrapSuppressionFlag OBJECT-TYPE SYNTAX TruthValue ACCESS read-write STATUS mandatory DESCRIPTION "This object determines whether traps of a given type will be issued or not. A value of true indicates a trap of the given type shall be suppressed." ::= { omibtransSptTrapSuppressionEntry 3 } END B.2. SNMPV2 SUPPORT OBJECTS Newnan Expires August, 1994 Page B-7 DRAFT February, 1994 IIMComibtransSptSNMPv2 DEFINITIONS ::= BEGIN IMPORTS omibtransSpt FROM IIMComibtransSptComplianceModule MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Integer32, internet, snmpModules FROM SNMPv2-SMI InstancePointer, RowStatus, TruthValue FROM SNMPv2-TC ClassInstancePointer, Parent, TableIndex FROM IIMComibtransConventions OBJECT-GROUP FROM SNMPv2-CONF; iimcomibtransSptSNMPv2 MODULE-IDENTITY LAST-UPDATED "9310150000Z" ORGANIZATION "Network Management Forum" CONTACT-INFO "AIII Subteam 1201 Mt. Kemble Avenue Morristown, NJ 07960-6628 USA Tel: +1 201-425-1900 Fax: +1 201-425-1515 Email: iimc@thumper.bellcore.com" DESCRIPTION "This module facilitates mechanized translation of MIBs from GDMO to the SNMPv2 framework. It contains the following supportive tables: * Child Table * DestroyObject Table * NameBinding Table. * TableIndex Table." ::= { omibtransSpt 0 2 } -- Note that OBJECT-GROUPs are registered using a different -- registration structure than is used for translated MIBs. children OBJECT-GROUP OBJECTS{ omibtransSptChild } STATUS current DESCRIPTION "See the description of omibtransSptChildTable below." ::= { omibtransSpt 1 0} omibtransSptChildTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptChildEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Provides a means to locate class instances that are immediately subordinate to a given class instance. As such, provides a subset of the CMIS scoping capability." ::= { omibtransSpt 1 } Newnan Expires August, 1994 Page B-8 DRAFT February, 1994 omibtransSptChildEntry OBJECT-TYPE SYNTAX OmibtransSptChildEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entry of omibtransSptChildTable." INDEX { omibtransSptParent, omibtransSptChildIndex } ::= { omibtransSptChildTable 1 } OmibtransSptChildEntry ::= SEQUENCE { omibtransSptParent ClassInstancePointer, omibtransSptChildIndex TableIndex, omibtransSptChild ClassInstancePointer } omibtransSptParent OBJECT-TYPE SYNTAX ClassInstancePointer MAX-ACCESS not-accessible STATUS current DESCRIPTION "Supplies the ClassInstancePointer for a class entry." ::= { omibtransSptChildEntry 1 } omibtransSptChildIndex OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS not-accessible STATUS current DESCRIPTION "Supplies unique table indices for different child entries." ::= { omibtransSptChildEntry 2 } omibtransSptChild OBJECT-TYPE SYNTAX ClassInstancePointer MAX-ACCESS read-only STATUS current DESCRIPTION "Holds ClassInstancePointers for child entries, i.e., class entries that are immediately subordinate to the parent class entry." ::= { omibtransSptChildEntry 3 } -- ********************************************************** destruction OBJECT-GROUP OBJECTS{ omibtransSptDestroyObject } STATUS current DESCRIPTION Newnan Expires August, 1994 Page B-9 DRAFT February, 1994 "See the description of omibtransSptDestroyObjectTable below." ::= { omibtransSpt 2 0} omibtransSptDestroyObjectTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptDestroyObjectEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Provides a means to delete (make not present) a scalar object or columnar entry. One use of this is to destroy an object corresponding to OPTIONAL syntax that is no longer wanted." ::= { omibtransSpt 2 } omibtransSptDestroyObjectEntry OBJECT-TYPE SYNTAX OmibtransSptDestroyObjectEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entry of omibtransSptDestroyObjectTable." INDEX { omibtransSptDestroyObjectIndex } ::= { omibtransSptDestroyObjectTable 1 } OmibtransSptDestroyObjectEntry ::= SEQUENCE { omibtransSptDestroyObjectIndex Pointer, omibtransSptDestroyObject TruthValue } omibtransSptDestroyObjectIndex OBJECT-TYPE SYNTAX Pointer MAX-ACCESS not-accessible STATUS current DESCRIPTION "This object points to the scalar object or columnar entry for which destruction is desired." ::= { omibtransSptDestroyObjectEntry 1 } omibtransSptDestroyObject OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "When this value is set to true and omibtransSptDestroyObjectIndex points to an object for which destruction is permitted (e.g., a columnar object corresponding to OPTIONAL syntax) the referenced object is destroyed. If destruction is not permitted, error- Newnan Expires August, 1994 Page B-10 DRAFT February, 1994 status of genErr is returned for SNMPv1 or inconsistentValue for SNMPv2. A value of false always results when reading this object." ::= { omibtransSptDestroyObjectEntry 2 } -- ********************************************************** nameBinding OBJECT-GROUP OBJECTS{ omibtransSptNameBinding } STATUS current DESCRIPTION "See the description of omibtransSptNameBindingTable below." ::= { omibtransSpt 3 0} omibtransSptNameBindingTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptNameBindingEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Provides a mechanism for specifying what NAME BINDING to use for manager-initiated creation of a class entry, should there be ambiguity. It also allows discovery of the NAME BINDING in use for a given class entry." ::= { omibtransSpt 3 } omibtransSptNameBindingEntry OBJECT-TYPE SYNTAX OmibtransSptNameBindingEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entry of omibtransSptNameBindingTable." INDEX { omibtransSptNameBindingIndex } ::= { omibtransSptNameBindingTable 1 } OmibtransSptNameBindingEntry ::= SEQUENCE { omibtransSptNameBindingIndex ClassInstancePointer, omibtransSptNameBinding OBJECT IDENTIFIER } omibtransSptNameBindingIndex OBJECT-TYPE SYNTAX ClassInstancePointer MAX-ACCESS not-accessible STATUS current DESCRIPTION "Provides the ClassInstancePointer to a class entry being created by a management station." ::= { omibtransSptNameBindingEntry 1 } Newnan Expires August, 1994 Page B-11 DRAFT February, 1994 omibtransSptNameBinding OBJECT-TYPE SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-write STATUS current DESCRIPTION "Provides the OBJECT IDENTIFIER for the NAME BINDING that will be used when creating a new class instance. For an existing class instance, returns the identifier of the NAME BINDING in use." ::= { omibtransSptNameBindingEntry 2 } -- ********************************************************** tableIndex OBJECT-GROUP OBJECTS{ omibtransSptTableIndexValue } STATUS current DESCRIPTION "See the description of omibtransSptTableIndexTable below." ::= { omibtransSpt 4 0} omibtransSptTableIndexTable OBJECT-TYPE SYNTAX SEQUENCE OF OmibtransSptTableIndexEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Provides a class table or side table index for purposes of manager-initiated creation of rows in tables (i.e., new managed object instances or new values for multi-valued attributes). Successive reads to this table return different values that are unique within the scope of the table within that agent. Such values are assigned arbitrarily by the agent, so a manager should make no assumption about the sequence or magnitude of values returned." ::= { omibtransSpt 4 } omibtransSptTableIndexEntry OBJECT-TYPE SYNTAX OmibtransSptTableIndexEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Entry of omibtransSptTableIndexTable." INDEX { omibtransSptTableIndexIndex } ::= { omibtransSptTableIndexTable 1 } OmibtransSptTableIndexEntry ::= SEQUENCE { omibtransSptTableIndexIndex InstancePointer, omibtransSptTableIndexValue TableIndex Newnan Expires August, 1994 Page B-12 DRAFT February, 1994 } omibtransSptTableIndexIndex OBJECT-TYPE SYNTAX InstancePointer MAX-ACCESS not-accessible STATUS current DESCRIPTION "Provides InstancePointer to the conceptual row for which a new entry will be created." ::= { omibtransSptTableIndexEntry 1 } omibtransSptTableIndexValue OBJECT-TYPE SYNTAX TableIndex MAX-ACCESS read-only STATUS current DESCRIPTION "Returns a TableIndex for the indicated conceptual table, to be used in creating a new entry. Thus, this object typically returns different values each time it is read." ::= { omibtransSptTableIndexEntry 2 } END B.3. TEXTUAL CONVENTIONS IIMComibtransConventions DEFINITIONS ::= BEGIN IMPORTS omibtransSpt FROM IIMComibtransSptComplianceModule InstancePointer, TruthValue FROM SNMPv2-TC; iimcomibtransConventions MODULE-IDENTITY LAST-UPDATED "9310150000Z" ORGANIZATION "Network Management Forum" CONTACT-INFO "AIII Subteam 1201 Mt. Kemble Avenue Morristown, NJ 07960-6628 USA Tel: +1 201-425-1900 Fax: +1 201-425-1515 Email: iimc@thumper.bellcore.com" DESCRIPTION "This module contains the textual conventions that support IIMCOMIBTRANS: * Pointer (a generic construct further refined below) * AnyDefinedBy Newnan Expires August, 1994 Page B-13 DRAFT February, 1994 * ActionTrigger * ActionStatus * BitString * ChoiceOfIntOrOID * ClassInstancePointer *Complex * GraphicString * MultiComplex * Parent * Recursion * RecursivelyNested * TableIndex" ::= { omibtransSpt 0 3 } Pointer ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "An object following this convention, when present, has one of two usages: 1) It follows the ObjectInstance textual convention. 2) It contains the (entire) name of a scalar MIB object or the (entire) name of a conceptual column entry. A Pointer is always defined as a conceptual column entry. Absence of this entry for a particular conceptual row indicates the absence of something to point to, i.e., end of a pointer chain." SYNTAX OBJECT IDENTIFIER ActionTrigger ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention provides a mechanism for triggering simulated ACTIONs in translated MIBs. A columnar entry following this convention controls the simulation of a particular ACTION for a particular class entry. An ActionTrigger object is always accompanied by a corresponding object that observes the ActionStatus textual convention. The ActionTrigger textual convention is a refinement of the TestAndIncr convention. To update this object requires that usual TestAndIncr requirements be met, also, that the associated ActionStatus object does not hold the value inProgress. If these prerequisites are not met, attempt to update will result in error-status of genErr for SNMPv1 or inconsistentValue for SNMPv2. Successfully setting the ActionTrigger initiates emulation of the translated ACTION, at which point the value of the ActionStatus object becomes inProgress. Newnan Expires August, 1994 Page B-14 DRAFT February, 1994 The value of the ActionTrigger however does not increment - nor does the SetRequest operation terminate - until the simulated ACTION ends due to completion or failure. At that point, the ActionTrigger increments and the value of ActionStatus indicates the outcome. An ActionTrigger object has DEFVAL of 0." SYNTAX TestAndIncr ActionStatus ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention provides a mechanism for reporting status of simulated ACTIONs in translated MIBs. An ActionStatus object is always accompanied by a corresponding object that observes the ActionTrigger textual convention. The ActionTrigger textual convention explains defines under which ActionStatus changes value. The values ActionStatus can assume are: The values ActionStatus can assume are: -2: inProgress. -1: noProblemDetected. Other non-negative: specificError. If the ACTION being emulated is confirmed, the value noProblemDetected indicates successful completion of the n-1th operation, where the ActionTrigger is of current value n. If the ACTION being emulated is unconfirmed, this value (noProblemDetected) indicates no emulated ACTION is in progress, or the status of the last action is not known. An ActionStatus object has DEFVAL of noProblemDetected." SYNTAX Integer32 AnyDefinedBy ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention is a Pointer (as defined above) that points to an SNMP structure mapping to the ASN.1 ANY DEFINED BY construct, e.g., of the form Y ::= SEQUENCE { OBJECT IDENTIFIER, -- or perhaps INTEGER ANY DEFINED BY } Newnan Expires August, 1994 Page B-15 DRAFT February, 1994 The structure pointed to corresponds to the value . The value is not directly mapped. The value pointed to will be in the same row as the AnyDefinedBy object if it is of simple syntax, i.e., is expressed as a single columnar object. Otherwise it is complex and is expressed in its own side table. Retrieval of the values associated with the columnar objects of textual convention AnyDefinedBy is a two (or more) stage process. First, the Internet name contained in the object with the AnyDefinedBy convention is retrieved. Then the retrieved Pointer shall be used to retrieve the actual value(s) desired. If the Pointer references an object that represents a simple syntax, then only the object referenced need be retrieved. If the Pointer references an object that represents complex syntax, then all columnar objects of all rows associated with the complex syntax will have to be retrieved. An AnyDefinedBy pointer within an active or notInService row shall always point to a valid syntactical option that itself is active or notInService. Attempt to point such a AnyDefinedBy object to invalid syntax results in error-status of badValue for SNMPv1 and inconsistentValue for SNMP. However, the pointer may be absent if the ANY DEFINED BY construct is part of optional syntax, or the syntax is not supported by the implementation. When such an object is successfully changed, any syntax previously pointed to (directly or indirectly) is automatically deleted by the agent." SYNTAX Pointer BitString ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention is equivalent to the ASN.1 BIT STRING type, with the same rules for bit ordering and padding." SYNTAX OCTET STRING ChoiceOfIntOrOID ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention allows an ASN.1 choice of Integer32 or OBJECT IDENTIFIER to be expressed as a single SNMP object. If the value to be expressed is of type Integer32, that value is expressed as an OBJECT IDENTIFIER with a prefix of either omibtransSptNonnegativeInteger or omibtransSptNegativeInteger, depending whether the Newnan Expires August, 1994 Page B-16 DRAFT February, 1994 value is nonnegative or not. The integer's value is carried in the arc immediately following the prefix. If the value is negative, it is understood that the value of the trailing arc is to be negated in arriving at the actual value. If the OBJECT IDENTIFIER begins with any prefix other than these two special values, it is understood to be a (normal) OBJECT IDENTIFIER choice." SYNTAX OBJECT IDENTIFIER omibtransSptNonnegativeInteger OBJECT IDENTIFIER ::= { omibtransSpt 6 } omibtransSptNegativeInteger OBJECT IDENTIFIER ::= { omibtransSpt 7 } ClassInstancePointer ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This value contains one of: * An InstancePointer to an occurrence of a (translated) class table. * An InstancePointer that references an occurrence of a tabular object group that was not arrived at through IIMCOMIBTRANS translation. * An Internet name (OBJECT IDENTIFIER) that references the first object (object with the lowest lexicographic ordering) of a non tabular object group. In every case, a ClassInstancePointer references an instance of an object group." SYNTAX Pointer Complex ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A Complex object is an invariant read-only pointer to a side table containing a single row of objects per entry in the superior table. Those objects represent translation of syntax (i.e., CHOICE, SEQUENCE, SET) that is complex but not multiply occuring. An object of this type is not-accessible. Its constant pointer value (name of the side table) appears in its DEFVAL clause." SYNTAX OBJECT IDENTIFIER GraphicString ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION Newnan Expires August, 1994 Page B-17 DRAFT February, 1994 "This convention is equivalent to the ISO/CCITT GraphicString type except the string is tagged as an OCTET STRING rather than a GraphicString." SYNTAX OCTET STRING MultiComplex ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A MultiComplex object is an invariant read-only pointer to a side table that may contain multiple rows of objects per entry in the superior table. Those rows represent translation of syntax (i.e., SEQUENCE OF or SET OF) that is both complex and multiply occuring. An object of this type is not-accessible. Its constant pointer value (name of the side table) appears in its DEFVAL clause." SYNTAX OBJECT IDENTIFIER Parent ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention is used to specify the superior class entry instance when creating a subordinate class entry. It may be queried to determine the superior class instance, if any, for an existing class instance. If a Parent pointer is not populated for a particular class entry, that object is considered to be subordinate to the local root, e.g., the internet system. The Parent pointer of a historical entry in a class table has the value zero (0)." SYNTAX Pointer Recursion ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention is a refinement of the Pointer convention for pointing to nested recursive syntax. One such column shall be defined per side table if that table represents syntax that is directly or indirectly recursive. For tables in which it is defined, one corresponding RecursivelyNested column shall also be defined. The recursion pointer points to the next (lower) level of nested syntax (absence of a pointer indicates end of chain). It may point to a different entry in the same table (direct recursion) or to another table (indirect recursion). The innermost level of syntax may be in a non-recursive side table, i.e., one that does not have a Recursion pointer. Newnan Expires August, 1994 Page B-18 DRAFT February, 1994 A Recursive pointer within an active or notInService row shall always point to a valid syntactical option that itself is active or notInService. Attempt to point such a Recursive object to invalid syntax results in error-status of badValue for SNMPv1 and inconsistentValue for SNMPv2. When such an object is successfully changed, any syntax previously pointed to (directly or indirectly) is automatically deleted by the agent." SYNTAX Pointer RecursivelyNested ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention is used to flag whether a conceptual row represents nested recursive syntax, i.e., whether this row is pointed to by an object of type Recursion. Columns following this convention are present only in rows that also have Recursive columns. This value is maintained by the agent, thus is read-only." SYNTAX TruthValue TableIndex ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "This convention is used to identify an Internet columnar object that represents the index for a conceptual entry in a table. It may have no particular meaning other than to discriminate between entries of the row. An object using this textual convention shall be not- accessible." SYNTAX Integer32 END B.4. MODULE-COMPLIANCE STATEMENT FOR SUPPORT OBJECTS IIMComibtransSptCompliance DEFINITIONS ::= BEGIN IMPORTS iimcIIMCOMIBTRANS FROM IimcAssignedOIDs {iso(1) member-body(2) 124 forum(360501) iimcManual(15) iimcModule(0) 1} MODULE-COMPLIANCE FROM SNMPv2-SMI; iimcomibtransSptCompliance MODULE-IDENTITY Newnan Expires August, 1994 Page B-19 DRAFT February, 1994 LAST-UPDATED "9310150000Z" ORGANIZATION "Network Management Forum" CONTACT-INFO "AIII Subteam 1201 Mt. Kemble Avenue Morristown, NJ 07960-6628 USA Tel: +1 201-425-1900 Fax: +1 201-425-1515 Email: iimc@thumper.bellcore.com" DESCRIPTION "This module defines compliance to the IIMCOMIBTRANS support MIB." ::= { omibtransSpt 0 0 0 } omibtransSpt OBJECT IDENTIFIER ::= {iso(1) member-body(2) 124 forum(360501) iimcManual(15) iimcModule(0) 5} iimcomibtransSptComplianceStatement MODULE-COMPLIANCE STATUS current DESCRIPTION "This statement defines compliance to IIMComibtransSptSNMPv1 and IIMComibtransSptSNMPv2. Both modules provide support for MIB modules translated from ISO/CCITT systems management to SNMP according to procedures specified in IIMCOMIBTRANS. An implementation claiming conformance to any of these support objects shall conform to IIMComibtransSptSNMPv1 and/or IIMComibtransSptSNMPv2, depending on the SNMP framework(s) supported." MODULE IIMComibtransSptSNMPv1 GROUP child DESCRIPTION "This group is unconditionally optional." GROUP destruction DESCRIPTION "This group is conditionally mandatory if the translated MIB that is supported includes scalar types that correspond to OPTIONAL syntax." GROUP nameBinding DESCRIPTION "This group is conditionally mandatory if, for the translated MIB supported, there is ever ambiguity about what NAME BINDING might apply for any combination of containing and contained object classes." GROUP tableIndex DESCRIPTION "This group is unconditionally optional." GROUP trapSuppression DESCRIPTION "This group is unconditionally optional." Newnan Expires August, 1994 Page B-20 DRAFT February, 1994 MODULE IIMComibtransSptSNMPv2 GROUP child DESCRIPTION "This group is unconditionally optional." GROUP destruction DESCRIPTION "This group is conditionally mandatory if the translated MIB that is supported includes scalar types that correspond to OPTIONAL syntax." GROUP nameBinding DESCRIPTION "This group is conditionally mandatory if, for the translated MIB supported, there is ever ambiguity about what NAME BINDING might apply for any combination of containing and contained object classes." GROUP tableIndex DESCRIPTION "This group is unconditionally optional." ::= { omibtransSpt 0 0 1 } END Newnan Expires August, 1994 Page B-21 DRAFT February, 1994 ANNEX C: GLOSSARY ASN.1 Abstract Syntax Notation One CCITT Consultative Committee on Telephony and Telegraphy CMIP Common Management Information Protocol CMIS Common Management Information Service DN Distinguished Name GDMO Guidelines for the Definition of Managed Objects GNMP Government Network Management Profile IIMC ISO/CCITT and Internet Management Coexistence ISO International Standards Organization MCS Management Conformance Statement MIB Management Information Base MOCS Managed Object Conformance Statement NMF Network Management Forum NVT Network Virtual Terminal OID Object Identifier OSI Open Systems Interconnection PDU Protocol Data Unit RDN Relative Distinguished Name RFC Request For Comments SMI Structure of Management Information SNMP Simple Network Management Protocol SNMPv1 Simple Network Management Protocol Version 1 SNMPv2 Simple Network Management Protocol Version 2 TCP/IP Transmission Control Protocol/Internetwork Protocol Newnan Expires August, 1994 Page C-1 DRAFT February, 1994 ANNEX D: REFERENCES 1) CCITT Recommendation X.700, Management Framework Definition for Open Systems Interconnection (OSI). ISO/IEC 7498-4: 1989, Information Processing Systems -- Open Systems Interconnection -Basic Reference Model Part 4 -- Management Framework. 2) ISO/IEC 8824: Information Technology -- Open System Interconnection -- Specification of Abstract Syntax Notation One (ASN.1),1990. 3) CCITT Recommendation X.209 (1988), Specification of basic encoding rules for abstract syntax notation one (ASN.1). ISO/IEC 8825: 1990, Information Technology -- Open System Interconnection -- Specification of Basic Encoding Rules for Abstract Syntax Notation One (ASN.1). 4) CCITT Recommendation X.710, (1991), Common Management Information Service Definition for CCITT Applications. ISO/IEC 9595: 1991, Information Technology -- Open System Interconnection -- Common Management Information Service Definition. 5) CCITT Recommendation X.711 | ISO/IEC 9596-1: 1991, Information Technology -- Open Systems Interconnection -- Common Management Information Protocol -- Part 1: Specification. 6) CCITT Recommendation X.720 (1992) | ISO/IEC 10165-1: 1992, Information Technology -- Open Systems Interconnection -- Structure of Management Information -- Part 1: Management Information Model. 7) CCITT Recommendation X.721 (1992) | ISO/IEC 10165-2: 1992, Information Technology -- Open Systems Interconnection -- Structure of Management Information -- Part 2: Definition of Management Information. 8) CCITT Recommendation X.721 (1992) | ISO/IEC 10165-4: 1992, Information Technology -- Open Systems Interconnection -- Structure of Management Information -- Part 4: Guidelines for the Definition of Managed Objects. 9) CCITT Recommendation X.723 (1993) | ISO/IEC 10165-6: 1993, Information Technology -- Open Systems Interconnection -- Structure of Management Information -- Part 6: Requirements and Guidelines for Implementation Newnan Expires August, 1994 Page D-1 DRAFT February, 1994 Conformance Statement Proformas associated with OSI Management. 10) RFC1155, M. Rose and K. McCloghrie, Structure and Identification of Management Information for TCP/IP based internets, May 1990. 11) RFC1157, J.D. Case, M.S. Fedor, M.L. Schoffstall,C. Davin, Simple Network Management Protocol (SNMP), May 1990. 12) RFC1212, M. Rose, K. McCloghrie -- Editors, Concise MIB Definitions, March 1991. 13) RFC1213, K. McCloghrie and M. Rose -- Editors, Management Information Base for Network Management of TCP/IP-based internets: MIB-II, March 1991. 14) RFC1215, M. Rose - Editor, A convention for Defining Traps for use with the SNMP, March 1991. 15) RFC1441, J.D. Case, K. McCloghrie, M.T. Rose, S.L.Waldbusser, Introduction to version 2 of the Internet-standard Network Management Framework, April 1993. 16) RFC1442, J.D. Case, K. McCloghrie, M.T. Rose, S.L.Waldbusser, Structure of Management Information for version 2 of the Simple Network Management Protocol (SNMPv2), April 1993. 17) RFC1443, J.D. Case, K. McCloghrie, M.T. Rose, S.L.Waldbusser, Textual Conventions for version 2 of the Simple Network Management Protocol (SNMPv2), April 1993. 18) RFC1444, J.D. Case, K. McCloghrie, M.T. Rose, S.L.Waldbusser, Conformance Statements for SNMPv2, April 1993. 19) RFC1452, J.D. Case, K. McCloghrie, M.T. Rose, S.L.Waldbusser, Coexistence between version 1 and version 2 of the Internet Network Management Framework, April 1993. 20) Network Management Forum: Forum 029, Translation of Internet MIB-II (RFC 1213) to ISO/CCITT GDMO MIB, Issue 1.0, October 1993. 21) Network Management Forum: Forum 028, ISO/CCITT to Internet Management Proxy, Issue 1.0, 1993. 22) Network Management Forum: Forum 027, ISO/CCITT to Internet Management Security, Issue 1.0, October 1993. Newnan Expires August, 1994 Page D-2 DRAFT February, 1994 23) Network Management Forum: Forum 026, Translation of Internet MIBs to ISO/CCITT GDMO MIBs, Issue 1.0, October 1993. 24) NM Forum and X/Open, ISO/CCITT and Internet Management: Coexistence and Interworking Strategy, Issue 1.0, October, 1992. Newnan Expires August, 1994 Page D-3 DRAFT February, 1994 25) Federal Information Processing Standards Publication 179 -- Government Network Management Profile v1.0, December 1992. INTERNET DRAFT - EXPIRES AUGUST, 1994 Newnan Expires August, 1994 Page D-4