summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc2578.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc2578.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc2578.txt')
-rw-r--r--doc/rfc/rfc2578.txt2541
1 files changed, 2541 insertions, 0 deletions
diff --git a/doc/rfc/rfc2578.txt b/doc/rfc/rfc2578.txt
new file mode 100644
index 0000000..0c1423c
--- /dev/null
+++ b/doc/rfc/rfc2578.txt
@@ -0,0 +1,2541 @@
+
+
+
+
+
+
+
+Network Working Group Editors of this version:
+Request for Comments: 2578 K. McCloghrie
+STD: 58 Cisco Systems
+Obsoletes: 1902 D. Perkins
+Category: Standards Track SNMPinfo
+ J. Schoenwaelder
+ TU Braunschweig
+ Authors of previous version:
+ J. Case
+ SNMP Research
+ K. McCloghrie
+ Cisco Systems
+ M. Rose
+ First Virtual Holdings
+ S. Waldbusser
+ International Network Services
+ April 1999
+
+
+ Structure of Management Information Version 2 (SMIv2)
+
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+
+Table of Contents
+
+ 1 Introduction .................................................3
+ 1.1 A Note on Terminology ......................................4
+ 2 Definitions ..................................................4
+ 2.1 The MODULE-IDENTITY macro ..................................5
+ 2.2 Object Names and Syntaxes ..................................5
+ 2.3 The OBJECT-TYPE macro ......................................8
+ 2.5 The NOTIFICATION-TYPE macro ...............................10
+ 2.6 Administrative Identifiers ................................11
+ 3 Information Modules .........................................11
+ 3.1 Macro Invocation ..........................................12
+ 3.1.1 Textual Values and Strings ..............................13
+
+
+McCloghrie, et al. Standards Track [Page 1]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ 3.2 IMPORTing Symbols .........................................14
+ 3.3 Exporting Symbols .........................................14
+ 3.4 ASN.1 Comments ............................................14
+ 3.5 OBJECT IDENTIFIER values ..................................15
+ 3.6 OBJECT IDENTIFIER usage ...................................15
+ 3.7 Reserved Keywords .........................................16
+ 4 Naming Hierarchy ............................................16
+ 5 Mapping of the MODULE-IDENTITY macro ........................17
+ 5.1 Mapping of the LAST-UPDATED clause ........................17
+ 5.2 Mapping of the ORGANIZATION clause ........................17
+ 5.3 Mapping of the CONTACT-INFO clause ........................18
+ 5.4 Mapping of the DESCRIPTION clause .........................18
+ 5.5 Mapping of the REVISION clause ............................18
+ 5.5.1 Mapping of the DESCRIPTION sub-clause ...................18
+ 5.6 Mapping of the MODULE-IDENTITY value ......................18
+ 5.7 Usage Example .............................................18
+ 6 Mapping of the OBJECT-IDENTITY macro ........................19
+ 6.1 Mapping of the STATUS clause ..............................19
+ 6.2 Mapping of the DESCRIPTION clause .........................20
+ 6.3 Mapping of the REFERENCE clause ...........................20
+ 6.4 Mapping of the OBJECT-IDENTITY value ......................20
+ 6.5 Usage Example .............................................20
+ 7 Mapping of the OBJECT-TYPE macro ............................20
+ 7.1 Mapping of the SYNTAX clause ..............................21
+ 7.1.1 Integer32 and INTEGER ...................................21
+ 7.1.2 OCTET STRING ............................................21
+ 7.1.3 OBJECT IDENTIFIER .......................................22
+ 7.1.4 The BITS construct ......................................22
+ 7.1.5 IpAddress ...............................................22
+ 7.1.6 Counter32 ...............................................23
+ 7.1.7 Gauge32 .................................................23
+ 7.1.8 TimeTicks ...............................................24
+ 7.1.9 Opaque ..................................................24
+ 7.1.10 Counter64 ..............................................24
+ 7.1.11 Unsigned32 .............................................25
+ 7.1.12 Conceptual Tables ......................................25
+ 7.1.12.1 Creation and Deletion of Conceptual Rows .............26
+ 7.2 Mapping of the UNITS clause ...............................26
+ 7.3 Mapping of the MAX-ACCESS clause ..........................26
+ 7.4 Mapping of the STATUS clause ..............................27
+ 7.5 Mapping of the DESCRIPTION clause .........................27
+ 7.6 Mapping of the REFERENCE clause ...........................27
+ 7.7 Mapping of the INDEX clause ...............................27
+ 7.8 Mapping of the AUGMENTS clause ............................29
+ 7.8.1 Relation between INDEX and AUGMENTS clauses .............30
+ 7.9 Mapping of the DEFVAL clause ..............................30
+ 7.10 Mapping of the OBJECT-TYPE value .........................31
+ 7.11 Usage Example ............................................32
+
+
+McCloghrie, et al. Standards Track [Page 2]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ 8 Mapping of the NOTIFICATION-TYPE macro ......................34
+ 8.1 Mapping of the OBJECTS clause .............................34
+ 8.2 Mapping of the STATUS clause ..............................34
+ 8.3 Mapping of the DESCRIPTION clause .........................35
+ 8.4 Mapping of the REFERENCE clause ...........................35
+ 8.5 Mapping of the NOTIFICATION-TYPE value ....................35
+ 8.6 Usage Example .............................................35
+ 9 Refined Syntax ..............................................36
+ 10 Extending an Information Module ............................37
+ 10.1 Object Assignments .......................................37
+ 10.2 Object Definitions .......................................38
+ 10.3 Notification Definitions .................................39
+ 11 Appendix A: Detailed Sub-typing Rules ......................40
+ 11.1 Syntax Rules .............................................40
+ 11.2 Examples .................................................41
+ 12 Security Considerations ....................................41
+ 13 Editors' Addresses .........................................41
+ 14 References .................................................42
+ 15 Full Copyright Statement ...................................43
+
+1. Introduction
+
+ Management information is viewed as a collection of managed objects,
+ residing in a virtual information store, termed the Management
+ Information Base (MIB). Collections of related objects are defined
+ in MIB modules. These modules are written using an adapted subset of
+ OSI's Abstract Syntax Notation One, ASN.1 (1988) [1]. It is the
+ purpose of this document, the Structure of Management Information
+ (SMI), to define that adapted subset, and to assign a set of
+ associated administrative values.
+
+ The SMI is divided into three parts: module definitions, object
+ definitions, and, notification definitions.
+
+(1) Module definitions are used when describing information modules.
+ An ASN.1 macro, MODULE-IDENTITY, is used to concisely convey the
+ semantics of an information module.
+
+(2) Object definitions are used when describing managed objects. An
+ ASN.1 macro, OBJECT-TYPE, is used to concisely convey the syntax
+ and semantics of a managed object.
+
+(3) Notification definitions are used when describing unsolicited
+ transmissions of management information. An ASN.1 macro,
+ NOTIFICATION-TYPE, is used to concisely convey the syntax and
+ semantics of a notification.
+
+
+
+
+McCloghrie, et al. Standards Track [Page 3]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+1.1. A Note on Terminology
+
+ For the purpose of exposition, the original Structure of Management
+ Information, as described in RFCs 1155 (STD 16), 1212 (STD 16), and
+ RFC 1215, is termed the SMI version 1 (SMIv1). The current version
+ of the Structure of Management Information is termed SMI version 2
+ (SMIv2).
+
+2. Definitions
+
+SNMPv2-SMI DEFINITIONS ::= BEGIN
+
+
+-- the path to the root
+
+org OBJECT IDENTIFIER ::= { iso 3 } -- "iso" = 1
+dod OBJECT IDENTIFIER ::= { org 6 }
+internet OBJECT IDENTIFIER ::= { dod 1 }
+
+directory OBJECT IDENTIFIER ::= { internet 1 }
+
+mgmt OBJECT IDENTIFIER ::= { internet 2 }
+mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }
+transmission OBJECT IDENTIFIER ::= { mib-2 10 }
+
+experimental OBJECT IDENTIFIER ::= { internet 3 }
+
+private OBJECT IDENTIFIER ::= { internet 4 }
+enterprises OBJECT IDENTIFIER ::= { private 1 }
+
+security OBJECT IDENTIFIER ::= { internet 5 }
+
+snmpV2 OBJECT IDENTIFIER ::= { internet 6 }
+
+-- transport domains
+snmpDomains OBJECT IDENTIFIER ::= { snmpV2 1 }
+
+-- transport proxies
+snmpProxys OBJECT IDENTIFIER ::= { snmpV2 2 }
+
+-- module identities
+snmpModules OBJECT IDENTIFIER ::= { snmpV2 3 }
+
+-- Extended UTCTime, to allow dates with four-digit years
+-- (Note that this definition of ExtUTCTime is not to be IMPORTed
+-- by MIB modules.)
+ExtUTCTime ::= OCTET STRING(SIZE(11 | 13))
+ -- format is YYMMDDHHMMZ or YYYYMMDDHHMMZ
+
+
+McCloghrie, et al. Standards Track [Page 4]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ -- where: YY - last two digits of year (only years
+ -- between 1900-1999)
+ -- YYYY - last four digits of the year (any year)
+ -- MM - month (01 through 12)
+ -- DD - day of month (01 through 31)
+ -- HH - hours (00 through 23)
+ -- MM - minutes (00 through 59)
+ -- Z - denotes GMT (the ASCII character Z)
+ --
+ -- For example, "9502192015Z" and "199502192015Z" represent
+ -- 8:15pm GMT on 19 February 1995. Years after 1999 must use
+ -- the four digit year format. Years 1900-1999 may use the
+ -- two or four digit format.
+
+-- definitions for information modules
+
+MODULE-IDENTITY MACRO ::=
+BEGIN
+ TYPE NOTATION ::=
+ "LAST-UPDATED" value(Update ExtUTCTime)
+ "ORGANIZATION" Text
+ "CONTACT-INFO" Text
+ "DESCRIPTION" Text
+ RevisionPart
+
+ VALUE NOTATION ::=
+ value(VALUE OBJECT IDENTIFIER)
+
+ RevisionPart ::=
+ Revisions
+ | empty
+ Revisions ::=
+ Revision
+ | Revisions Revision
+ Revision ::=
+ "REVISION" value(Update ExtUTCTime)
+ "DESCRIPTION" Text
+
+ -- a character string as defined in section 3.1.1
+ Text ::= value(IA5String)
+END
+
+
+OBJECT-IDENTITY MACRO ::=
+BEGIN
+ TYPE NOTATION ::=
+ "STATUS" Status
+ "DESCRIPTION" Text
+
+
+McCloghrie, et al. Standards Track [Page 5]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ ReferPart
+
+ VALUE NOTATION ::=
+ value(VALUE OBJECT IDENTIFIER)
+
+ Status ::=
+ "current"
+ | "deprecated"
+ | "obsolete"
+
+ ReferPart ::=
+ "REFERENCE" Text
+ | empty
+
+ -- a character string as defined in section 3.1.1
+ Text ::= value(IA5String)
+END
+
+
+-- names of objects
+-- (Note that these definitions of ObjectName and NotificationName
+-- are not to be IMPORTed by MIB modules.)
+
+ObjectName ::=
+ OBJECT IDENTIFIER
+
+NotificationName ::=
+ OBJECT IDENTIFIER
+
+-- syntax of objects
+
+-- the "base types" defined here are:
+-- 3 built-in ASN.1 types: INTEGER, OCTET STRING, OBJECT IDENTIFIER
+-- 8 application-defined types: Integer32, IpAddress, Counter32,
+-- Gauge32, Unsigned32, TimeTicks, Opaque, and Counter64
+
+ObjectSyntax ::=
+ CHOICE {
+ simple
+ SimpleSyntax,
+
+ -- note that SEQUENCEs for conceptual tables and
+ -- rows are not mentioned here...
+
+ application-wide
+ ApplicationSyntax
+ }
+
+
+
+McCloghrie, et al. Standards Track [Page 6]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+-- built-in ASN.1 types
+
+SimpleSyntax ::=
+ CHOICE {
+ -- INTEGERs with a more restrictive range
+ -- may also be used
+ integer-value -- includes Integer32
+ INTEGER (-2147483648..2147483647),
+
+ -- OCTET STRINGs with a more restrictive size
+ -- may also be used
+ string-value
+ OCTET STRING (SIZE (0..65535)),
+
+ objectID-value
+ OBJECT IDENTIFIER
+ }
+
+-- indistinguishable from INTEGER, but never needs more than
+-- 32-bits for a two's complement representation
+Integer32 ::=
+ INTEGER (-2147483648..2147483647)
+
+
+-- application-wide types
+
+ApplicationSyntax ::=
+ CHOICE {
+ ipAddress-value
+ IpAddress,
+
+ counter-value
+ Counter32,
+
+ timeticks-value
+ TimeTicks,
+
+ arbitrary-value
+ Opaque,
+
+ big-counter-value
+ Counter64,
+
+ unsigned-integer-value -- includes Gauge32
+ Unsigned32
+ }
+
+-- in network-byte order
+
+
+McCloghrie, et al. Standards Track [Page 7]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+-- (this is a tagged type for historical reasons)
+IpAddress ::=
+ [APPLICATION 0]
+ IMPLICIT OCTET STRING (SIZE (4))
+
+-- this wraps
+Counter32 ::=
+ [APPLICATION 1]
+ IMPLICIT INTEGER (0..4294967295)
+
+-- this doesn't wrap
+Gauge32 ::=
+ [APPLICATION 2]
+ IMPLICIT INTEGER (0..4294967295)
+
+-- an unsigned 32-bit quantity
+-- indistinguishable from Gauge32
+Unsigned32 ::=
+ [APPLICATION 2]
+ IMPLICIT INTEGER (0..4294967295)
+
+-- hundredths of seconds since an epoch
+TimeTicks ::=
+ [APPLICATION 3]
+ IMPLICIT INTEGER (0..4294967295)
+
+-- for backward-compatibility only
+Opaque ::=
+ [APPLICATION 4]
+ IMPLICIT OCTET STRING
+
+-- for counters that wrap in less than one hour with only 32 bits
+Counter64 ::=
+ [APPLICATION 6]
+ IMPLICIT INTEGER (0..18446744073709551615)
+
+
+-- definition for objects
+
+OBJECT-TYPE MACRO ::=
+BEGIN
+ TYPE NOTATION ::=
+ "SYNTAX" Syntax
+ UnitsPart
+ "MAX-ACCESS" Access
+ "STATUS" Status
+ "DESCRIPTION" Text
+ ReferPart
+
+
+McCloghrie, et al. Standards Track [Page 8]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ IndexPart
+ DefValPart
+
+ VALUE NOTATION ::=
+ value(VALUE ObjectName)
+
+ Syntax ::= -- Must be one of the following:
+ -- a base type (or its refinement),
+ -- a textual convention (or its refinement), or
+ -- a BITS pseudo-type
+ type
+ | "BITS" "{" NamedBits "}"
+
+ NamedBits ::= NamedBit
+ | NamedBits "," NamedBit
+
+ NamedBit ::= identifier "(" number ")" -- number is nonnegative
+
+ UnitsPart ::=
+ "UNITS" Text
+ | empty
+
+ Access ::=
+ "not-accessible"
+ | "accessible-for-notify"
+ | "read-only"
+ | "read-write"
+ | "read-create"
+
+ Status ::=
+ "current"
+ | "deprecated"
+ | "obsolete"
+
+ ReferPart ::=
+ "REFERENCE" Text
+ | empty
+
+ IndexPart ::=
+ "INDEX" "{" IndexTypes "}"
+ | "AUGMENTS" "{" Entry "}"
+ | empty
+ IndexTypes ::=
+ IndexType
+ | IndexTypes "," IndexType
+ IndexType ::=
+ "IMPLIED" Index
+ | Index
+
+
+McCloghrie, et al. Standards Track [Page 9]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ Index ::=
+ -- use the SYNTAX value of the
+ -- correspondent OBJECT-TYPE invocation
+ value(ObjectName)
+ Entry ::=
+ -- use the INDEX value of the
+ -- correspondent OBJECT-TYPE invocation
+ value(ObjectName)
+
+ DefValPart ::= "DEFVAL" "{" Defvalue "}"
+ | empty
+
+ Defvalue ::= -- must be valid for the type specified in
+ -- SYNTAX clause of same OBJECT-TYPE macro
+ value(ObjectSyntax)
+ | "{" BitsValue "}"
+
+ BitsValue ::= BitNames
+ | empty
+
+ BitNames ::= BitName
+ | BitNames "," BitName
+
+ BitName ::= identifier
+
+ -- a character string as defined in section 3.1.1
+ Text ::= value(IA5String)
+END
+
+
+-- definitions for notifications
+
+NOTIFICATION-TYPE MACRO ::=
+BEGIN
+ TYPE NOTATION ::=
+ ObjectsPart
+ "STATUS" Status
+ "DESCRIPTION" Text
+ ReferPart
+
+ VALUE NOTATION ::=
+ value(VALUE NotificationName)
+
+ ObjectsPart ::=
+ "OBJECTS" "{" Objects "}"
+ | empty
+ Objects ::=
+ Object
+
+
+McCloghrie, et al. Standards Track [Page 10]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ | Objects "," Object
+ Object ::=
+ value(ObjectName)
+
+ Status ::=
+ "current"
+ | "deprecated"
+ | "obsolete"
+
+ ReferPart ::=
+ "REFERENCE" Text
+ | empty
+
+ -- a character string as defined in section 3.1.1
+ Text ::= value(IA5String)
+END
+
+-- definitions of administrative identifiers
+
+zeroDotZero OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "A value used for null identifiers."
+ ::= { 0 0 }
+
+END
+
+3. Information Modules
+
+ An "information module" is an ASN.1 module defining information
+ relating to network management.
+
+ The SMI describes how to use an adapted subset of ASN.1 (1988) to
+ define an information module. Further, additional restrictions are
+ placed on "standard" information modules. It is strongly recommended
+ that "enterprise-specific" information modules also adhere to these
+ restrictions.
+
+ Typically, there are three kinds of information modules:
+
+(1) MIB modules, which contain definitions of inter-related managed
+ objects, make use of the OBJECT-TYPE and NOTIFICATION-TYPE macros;
+
+(2) compliance statements for MIB modules, which make use of the
+ MODULE-COMPLIANCE and OBJECT-GROUP macros [2]; and,
+
+(3) capability statements for agent implementations which make use of
+ the AGENT-CAPABILITIES macros [2].
+
+
+McCloghrie, et al. Standards Track [Page 11]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ This classification scheme does not imply a rigid taxonomy. For
+ example, a "standard" information module will normally include
+ definitions of managed objects and a compliance statement.
+ Similarly, an "enterprise-specific" information module might include
+ definitions of managed objects and a capability statement. Of
+ course, a "standard" information module may not contain capability
+ statements.
+
+ The constructs of ASN.1 allowed in SMIv2 information modules include:
+ the IMPORTS clause, value definitions for OBJECT IDENTIFIERs, type
+ definitions for SEQUENCEs (with restrictions), ASN.1 type assignments
+ of the restricted ASN.1 types allowed in SMIv2, and instances of
+ ASN.1 macros defined in this document and its companion documents [2,
+ 3]. Additional ASN.1 macros must not be defined in SMIv2 information
+ modules. SMIv1 macros must not be used in SMIv2 information modules.
+
+ The names of all standard information modules must be unique (but
+ different versions of the same information module should have the
+ same name). Developers of enterprise information modules are
+ encouraged to choose names for their information modules that will
+ have a low probability of colliding with standard or other enterprise
+ information modules. An information module may not use the ASN.1
+ construct of placing an object identifier value between the module
+ name and the "DEFINITIONS" keyword. For the purposes of this
+ specification, an ASN.1 module name begins with an upper-case letter
+ and continues with zero or more letters, digits, or hyphens, except
+ that a hyphen can not be the last character, nor can there be two
+ consecutive hyphens.
+
+ All information modules start with exactly one invocation of the
+ MODULE-IDENTITY macro, which provides contact information as well as
+ revision history to distinguish between versions of the same
+ information module. This invocation must appear immediately after
+ any IMPORTs statements.
+
+3.1. Macro Invocation
+
+ Within an information module, each macro invocation appears as:
+
+ <descriptor> <macro> <clauses> ::= <value>
+
+ where <descriptor> corresponds to an ASN.1 identifier, <macro> names
+ the macro being invoked, and <clauses> and <value> depend on the
+ definition of the macro. (Note that this definition of a descriptor
+ applies to all macros defined in this memo and in [2].)
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 12]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ For the purposes of this specification, an ASN.1 identifier consists
+ of one or more letters or digits, and its initial character must be a
+ lower-case letter. Note that hyphens are not allowed by this
+ specification (except for use by information modules converted from
+ SMIv1 which did allow hyphens).
+
+ For all descriptors appearing in an information module, the
+ descriptor shall be unique and mnemonic, and shall not exceed 64
+ characters in length. (However, descriptors longer than 32
+ characters are not recommended.) This promotes a common language for
+ humans to use when discussing the information module and also
+ facilitates simple table mappings for user-interfaces.
+
+ The set of descriptors defined in all "standard" information modules
+ shall be unique.
+
+ Finally, by convention, if the descriptor refers to an object with a
+ SYNTAX clause value of either Counter32 or Counter64, then the
+ descriptor used for the object should denote plurality.
+
+3.1.1. Textual Values and Strings
+
+ Some clauses in a macro invocation may take a character string as a
+ textual value (e.g., the DESCRIPTION clause). Other clauses take
+ binary or hexadecimal strings (in any position where a non-negative
+ number is allowed).
+
+ A character string is preceded and followed by the quote character
+ ("), and consists of an arbitrary number (possibly zero) of:
+
+ - any 7-bit displayable ASCII characters except quote ("),
+ - tab characters,
+ - spaces, and
+ - line terminator characters (\n or \r\n).
+
+ The value of a character string is interpreted as ASCII.
+
+ A binary string consists of a number (possibly zero) of zeros and
+ ones preceded by a single (') and followed by either the pair ('B) or
+ ('b), where the number is a multiple of eight.
+
+ A hexadecimal string consists of an even number (possibly zero) of
+ hexadecimal digits, preceded by a single (') and followed by either
+ the pair ('H) or ('h). Digits specified via letters can be in upper
+ or lower case.
+
+ Note that ASN.1 comments can not be enclosed inside any of these
+ types of strings.
+
+
+McCloghrie, et al. Standards Track [Page 13]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+3.2. IMPORTing Symbols
+
+ To reference an external object, the IMPORTS statement must be used
+ to identify both the descriptor and the module in which the
+ descriptor is defined, where the module is identified by its ASN.1
+ module name.
+
+ Note that when symbols from "enterprise-specific" information modules
+ are referenced (e.g., a descriptor), there is the possibility of
+ collision. As such, if different objects with the same descriptor
+ are IMPORTed, then this ambiguity is resolved by prefixing the
+ descriptor with the name of the information module and a dot ("."),
+ i.e.,
+
+ "module.descriptor"
+
+ (All descriptors must be unique within any information module.)
+
+ Of course, this notation can be used to refer to objects even when
+ there is no collision when IMPORTing symbols.
+
+ Finally, if any of the ASN.1 named types and macros defined in this
+ document, specifically:
+
+ Counter32, Counter64, Gauge32, Integer32, IpAddress, MODULE-
+ IDENTITY, NOTIFICATION-TYPE, Opaque, OBJECT-TYPE, OBJECT-
+ IDENTITY, TimeTicks, Unsigned32,
+
+ or any of those defined in [2] or [3], are used in an information
+ module, then they must be imported using the IMPORTS statement.
+ However, the following must not be included in an IMPORTS statement:
+
+ - named types defined by ASN.1 itself, specifically: INTEGER,
+ OCTET STRING, OBJECT IDENTIFIER, SEQUENCE, SEQUENCE OF type,
+ - the BITS construct.
+
+3.3. Exporting Symbols
+
+ The ASN.1 EXPORTS statement is not allowed in SMIv2 information
+ modules. All items defined in an information module are
+ automatically exported.
+
+3.4. ASN.1 Comments
+
+ ASN.1 comments can be included in an information module. However, it
+ is recommended that all substantive descriptions be placed within an
+ appropriate DESCRIPTION clause.
+
+
+
+McCloghrie, et al. Standards Track [Page 14]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ ASN.1 comments commence with a pair of adjacent hyphens and end with
+ the next pair of adjacent hyphens or at the end of the line,
+ whichever occurs first. Comments ended by a pair of hyphens have the
+ effect of a single space character.
+
+3.5. OBJECT IDENTIFIER values
+
+ An OBJECT IDENTIFIER value is an ordered list of non-negative
+ numbers. For the SMIv2, each number in the list is referred to as a
+ sub-identifier, there are at most 128 sub-identifiers in a value, and
+ each sub-identifier has a maximum value of 2^32-1 (4294967295
+ decimal).
+
+ All OBJECT IDENTIFIER values have at least two sub-identifiers, where
+ the value of the first sub-identifier is one of the following well-
+ known names:
+
+ Value Name
+ 0 ccitt
+ 1 iso
+ 2 joint-iso-ccitt
+
+ (Note that this SMI does not recognize "new" well-known names, e.g.,
+ as defined when the CCITT became the ITU.)
+
+3.6. OBJECT IDENTIFIER usage
+
+ OBJECT IDENTIFIERs are used in information modules in two ways:
+
+(1) registration: the definition of a particular item is registered as
+ a particular OBJECT IDENTIFIER value, and associated with a
+ particular descriptor. After such a registration, the semantics
+ thereby associated with the value are not allowed to change, the
+ OBJECT IDENTIFIER can not be used for any other registration, and
+ the descriptor can not be changed nor associated with any other
+ registration. The following macros result in a registration:
+
+ OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE, OBJECT-GROUP,
+ OBJECT-IDENTITY, NOTIFICATION-GROUP, MODULE-COMPLIANCE,
+ AGENT-CAPABILITIES.
+
+(2) assignment: a descriptor can be assigned to a particular OBJECT
+ IDENTIFIER value. For this usage, the semantics associated with
+ the OBJECT IDENTIFIER value is not allowed to change, and a
+ descriptor assigned to a particular OBJECT IDENTIFIER value cannot
+ subsequently be assigned to another. However, multiple descriptors
+ can be assigned to the same OBJECT IDENTIFIER value. Such
+ assignments are specified in the following manner:
+
+
+McCloghrie, et al. Standards Track [Page 15]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ mib OBJECT IDENTIFIER ::= { mgmt 1 } -- from RFC1156
+ mib-2 OBJECT IDENTIFIER ::= { mgmt 1 } -- from RFC1213
+ fredRouter OBJECT IDENTIFIER ::= { flintStones 1 1 }
+ barneySwitch OBJECT IDENTIFIER ::= { flintStones bedrock(2) 1 }
+
+ Note while the above examples are legal, the following is not:
+
+ dinoHost OBJECT IDENTIFIER ::= { flintStones bedrock 2 }
+
+ A descriptor is allowed to be associated with both a registration and
+ an assignment, providing both are associated with the same OBJECT
+ IDENTIFIER value and semantics.
+
+3.7. Reserved Keywords
+
+ The following are reserved keywords which must not be used as
+ descriptors or module names:
+
+ ABSENT ACCESS AGENT-CAPABILITIES ANY APPLICATION AUGMENTS BEGIN
+ BIT BITS BOOLEAN BY CHOICE COMPONENT COMPONENTS CONTACT-INFO
+ CREATION-REQUIRES Counter32 Counter64 DEFAULT DEFINED
+ DEFINITIONS DEFVAL DESCRIPTION DISPLAY-HINT END ENUMERATED
+ ENTERPRISE EXPLICIT EXPORTS EXTERNAL FALSE FROM GROUP Gauge32
+ IDENTIFIER IMPLICIT IMPLIED IMPORTS INCLUDES INDEX INTEGER
+ Integer32 IpAddress LAST-UPDATED MANDATORY-GROUPS MAX MAX-ACCESS
+ MIN MIN-ACCESS MINUS-INFINITY MODULE MODULE-COMPLIANCE MODULE-
+ IDENTITY NOTIFICATION-GROUP NOTIFICATION-TYPE NOTIFICATIONS NULL
+ OBJECT OBJECT-GROUP OBJECT-IDENTITY OBJECT-TYPE OBJECTS OCTET OF
+ OPTIONAL ORGANIZATION Opaque PLUS-INFINITY PRESENT PRIVATE
+ PRODUCT-RELEASE REAL REFERENCE REVISION SEQUENCE SET SIZE STATUS
+ STRING SUPPORTS SYNTAX TAGS TEXTUAL-CONVENTION TRAP-TYPE TRUE
+ TimeTicks UNITS UNIVERSAL Unsigned32 VARIABLES VARIATION WITH
+ WRITE-SYNTAX
+
+4. Naming Hierarchy
+
+ The root of the subtree administered by the Internet Assigned Numbers
+ Authority (IANA) for the Internet is:
+
+ internet OBJECT IDENTIFIER ::= { iso 3 6 1 }
+
+ That is, the Internet subtree of OBJECT IDENTIFIERs starts with the
+ prefix:
+
+ 1.3.6.1.
+
+ Several branches underneath this subtree are used for network
+ management:
+
+
+McCloghrie, et al. Standards Track [Page 16]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ mgmt OBJECT IDENTIFIER ::= { internet 2 }
+ experimental OBJECT IDENTIFIER ::= { internet 3 }
+ private OBJECT IDENTIFIER ::= { internet 4 }
+ enterprises OBJECT IDENTIFIER ::= { private 1 }
+
+ However, the SMI does not prohibit the definition of objects in other
+ portions of the object tree.
+
+ The mgmt(2) subtree is used to identify "standard" objects.
+
+ The experimental(3) subtree is used to identify objects being
+ designed by working groups of the IETF. If an information module
+ produced by a working group becomes a "standard" information module,
+ then at the very beginning of its entry onto the Internet standards
+ track, the objects are moved under the mgmt(2) subtree.
+
+ The private(4) subtree is used to identify objects defined
+ unilaterally. The enterprises(1) subtree beneath private is used,
+ among other things, to permit providers of networking subsystems to
+ register models of their products.
+
+5. Mapping of the MODULE-IDENTITY macro
+
+ The MODULE-IDENTITY macro is used to provide contact and revision
+ history for each information module. It must appear exactly once in
+ every information module. It should be noted that the expansion of
+ the MODULE-IDENTITY macro is something which conceptually happens
+ during implementation and not during run-time.
+
+ Note that reference in an IMPORTS clause or in clauses of SMIv2
+ macros to an information module is NOT through the use of the
+ 'descriptor' of a MODULE-IDENTITY macro; rather, an information
+ module is referenced through specifying its module name.
+
+5.1. Mapping of the LAST-UPDATED clause
+
+ The LAST-UPDATED clause, which must be present, contains the date and
+ time that this information module was last edited.
+
+5.2. Mapping of the ORGANIZATION clause
+
+ The ORGANIZATION clause, which must be present, contains a textual
+ description of the organization under whose auspices this information
+ module was developed.
+
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 17]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+5.3. Mapping of the CONTACT-INFO clause
+
+ The CONTACT-INFO clause, which must be present, contains the name,
+ postal address, telephone number, and electronic mail address of the
+ person to whom technical queries concerning this information module
+ should be sent.
+
+5.4. Mapping of the DESCRIPTION clause
+
+ The DESCRIPTION clause, which must be present, contains a high-level
+ textual description of the contents of this information module.
+
+5.5. Mapping of the REVISION clause
+
+ The REVISION clause, which need not be present, is repeatedly used to
+ describe the revisions (including the initial version) made to this
+ information module, in reverse chronological order (i.e., most recent
+ first). Each instance of this clause contains the date and time of
+ the revision.
+
+5.5.1. Mapping of the DESCRIPTION sub-clause
+
+ The DESCRIPTION sub-clause, which must be present for each REVISION
+ clause, contains a high-level textual description of the revision
+ identified in that REVISION clause.
+
+5.6. Mapping of the MODULE-IDENTITY value
+
+ The value of an invocation of the MODULE-IDENTITY macro is an OBJECT
+ IDENTIFIER. As such, this value may be authoritatively used when
+ specifying an OBJECT IDENTIFIER value to refer to the information
+ module containing the invocation.
+
+ Note that it is a common practice to use the value of the MODULE-
+ IDENTITY macro as a subtree under which other OBJECT IDENTIFIER
+ values assigned within the module are defined. However, it is legal
+ (and occasionally necessary) for the other OBJECT IDENTIFIER values
+ assigned within the module to be unrelated to the OBJECT IDENTIFIER
+ value of the MODULE-IDENTITY macro.
+
+5.7. Usage Example
+
+ Consider how a skeletal MIB module might be constructed: e.g.,
+
+ FIZBIN-MIB DEFINITIONS ::= BEGIN
+
+ IMPORTS
+ MODULE-IDENTITY, OBJECT-TYPE, experimental
+
+
+McCloghrie, et al. Standards Track [Page 18]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ FROM SNMPv2-SMI;
+
+
+ fizbin MODULE-IDENTITY
+ LAST-UPDATED "199505241811Z"
+ ORGANIZATION "IETF SNMPv2 Working Group"
+ CONTACT-INFO
+ " Marshall T. Rose
+
+ Postal: Dover Beach Consulting, Inc.
+ 420 Whisman Court
+ Mountain View, CA 94043-2186
+ US
+
+ Tel: +1 415 968 1052
+ Fax: +1 415 968 2510
+
+ E-mail: mrose@dbc.mtview.ca.us"
+
+ DESCRIPTION
+ "The MIB module for entities implementing the xxxx
+ protocol."
+ REVISION "9505241811Z"
+ DESCRIPTION
+ "The latest version of this MIB module."
+ REVISION "9210070433Z"
+ DESCRIPTION
+ "The initial version of this MIB module, published in
+ RFC yyyy."
+ -- contact IANA for actual number
+ ::= { experimental xx }
+
+ END
+
+6. Mapping of the OBJECT-IDENTITY macro
+
+ The OBJECT-IDENTITY macro is used to define information about an
+ OBJECT IDENTIFIER assignment. All administrative OBJECT IDENTIFIER
+ assignments which define a type identification value (see
+ AutonomousType, a textual convention defined in [3]) should be
+ defined via the OBJECT-IDENTITY macro. It should be noted that the
+ expansion of the OBJECT-IDENTITY macro is something which
+ conceptually happens during implementation and not during run-time.
+
+6.1. Mapping of the STATUS clause
+
+ The STATUS clause, which must be present, indicates whether this
+ definition is current or historic.
+
+
+McCloghrie, et al. Standards Track [Page 19]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ The value "current" means that the definition is current and valid.
+ The value "obsolete" means the definition is obsolete and should not
+ be implemented and/or can be removed if previously implemented.
+ While the value "deprecated" also indicates an obsolete definition,
+ it permits new/continued implementation in order to foster
+ interoperability with older/existing implementations.
+
+6.2. Mapping of the DESCRIPTION clause
+
+ The DESCRIPTION clause, which must be present, contains a textual
+ description of the object assignment.
+
+6.3. Mapping of the REFERENCE clause
+
+ The REFERENCE clause, which need not be present, contains a textual
+ cross-reference to some other document, either another information
+ module which defines a related assignment, or some other document
+ which provides additional information relevant to this definition.
+
+6.4. Mapping of the OBJECT-IDENTITY value
+
+ The value of an invocation of the OBJECT-IDENTITY macro is an OBJECT
+ IDENTIFIER.
+
+6.5. Usage Example
+
+ Consider how an OBJECT IDENTIFIER assignment might be made: e.g.,
+
+ fizbin69 OBJECT-IDENTITY
+ STATUS current
+ DESCRIPTION
+ "The authoritative identity of the Fizbin 69 chipset."
+ ::= { fizbinChipSets 1 }
+
+7. Mapping of the OBJECT-TYPE macro
+
+ The OBJECT-TYPE macro is used to define a type of managed object. It
+ should be noted that the expansion of the OBJECT-TYPE macro is
+ something which conceptually happens during implementation and not
+ during run-time.
+
+ For leaf objects which are not columnar objects (i.e., not contained
+ within a conceptual table), instances of the object are identified by
+ appending a sub-identifier of zero to the name of that object.
+ Otherwise, the INDEX clause of the conceptual row object superior to
+ a columnar object defines instance identification information.
+
+
+
+
+McCloghrie, et al. Standards Track [Page 20]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+7.1. Mapping of the SYNTAX clause
+
+ The SYNTAX clause, which must be present, defines the abstract data
+ structure corresponding to that object. The data structure must be
+ one of the following: a base type, the BITS construct, or a textual
+ convention. (SEQUENCE OF and SEQUENCE are also possible for
+ conceptual tables, see section 7.1.12). The base types are those
+ defined in the ObjectSyntax CHOICE. A textual convention is a
+ newly-defined type defined as a sub-type of a base type [3].
+
+ An extended subset of the full capabilities of ASN.1 (1988) sub-
+ typing is allowed, as appropriate to the underlying ASN.1 type. Any
+ such restriction on size, range or enumerations specified in this
+ clause represents the maximal level of support which makes "protocol
+ sense". Restrictions on sub-typing are specified in detail in
+ Section 9 and Appendix A of this memo.
+
+ The semantics of ObjectSyntax are now described.
+
+7.1.1. Integer32 and INTEGER
+
+ The Integer32 type represents integer-valued information between
+ -2^31 and 2^31-1 inclusive (-2147483648 to 2147483647 decimal). This
+ type is indistinguishable from the INTEGER type. Both the INTEGER
+ and Integer32 types may be sub-typed to be more constrained than the
+ Integer32 type.
+
+ The INTEGER type (but not the Integer32 type) may also be used to
+ represent integer-valued information as named-number enumerations.
+ In this case, only those named-numbers so enumerated may be present
+ as a value. Note that although it is recommended that enumerated
+ values start at 1 and be numbered contiguously, any valid value for
+ Integer32 is allowed for an enumerated value and, further, enumerated
+ values needn't be contiguously assigned.
+
+ Finally, a label for a named-number enumeration must consist of one
+ or more letters or digits, up to a maximum of 64 characters, and the
+ initial character must be a lower-case letter. (However, labels
+ longer than 32 characters are not recommended.) Note that hyphens
+ are not allowed by this specification (except for use by information
+ modules converted from SMIv1 which did allow hyphens).
+
+7.1.2. OCTET STRING
+
+ The OCTET STRING type represents arbitrary binary or textual data.
+ Although the SMI-specified size limitation for this type is 65535
+ octets, MIB designers should realize that there may be implementation
+ and interoperability limitations for sizes in excess of 255 octets.
+
+
+McCloghrie, et al. Standards Track [Page 21]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+7.1.3. OBJECT IDENTIFIER
+
+ The OBJECT IDENTIFIER type represents administratively assigned
+ names. Any instance of this type may have at most 128 sub-
+ identifiers. Further, each sub-identifier must not exceed the value
+ 2^32-1 (4294967295 decimal).
+
+7.1.4. The BITS construct
+
+ The BITS construct represents an enumeration of named bits. This
+ collection is assigned non-negative, contiguous (but see below)
+ values, starting at zero. Only those named-bits so enumerated may be
+ present in a value. (Thus, enumerations must be assigned to
+ consecutive bits; however, see Section 9 for refinements of an object
+ with this syntax.)
+
+ As part of updating an information module, for an object defined
+ using the BITS construct, new enumerations can be added or existing
+ enumerations can have new labels assigned to them. After an
+ enumeration is added, it might not be possible to distinguish between
+ an implementation of the updated object for which the new enumeration
+ is not asserted, and an implementation of the object prior to the
+ addition. Depending on the circumstances, such an ambiguity could
+ either be desirable or could be undesirable. The means to avoid such
+ an ambiguity is dependent on the encoding of values on the wire;
+ however, one possibility is to define new enumerations starting at
+ the next multiple of eight bits. (Of course, this can also result in
+ the enumerations no longer being contiguous.)
+
+ Although there is no SMI-specified limitation on the number of
+ enumerations (and therefore on the length of a value), except as may
+ be imposed by the limit on the length of an OCTET STRING, MIB
+ designers should realize that there may be implementation and
+ interoperability limitations for sizes in excess of 128 bits.
+
+ Finally, a label for a named-number enumeration must consist of one
+ or more letters or digits, up to a maximum of 64 characters, and the
+ initial character must be a lower-case letter. (However, labels
+ longer than 32 characters are not recommended.) Note that hyphens
+ are not allowed by this specification.
+
+7.1.5. IpAddress
+
+ The IpAddress type represents a 32-bit internet address. It is
+ represented as an OCTET STRING of length 4, in network byte-order.
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 22]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ Note that the IpAddress type is a tagged type for historical reasons.
+ Network addresses should be represented using an invocation of the
+ TEXTUAL-CONVENTION macro [3].
+
+7.1.6. Counter32
+
+ The Counter32 type represents a non-negative integer which
+ monotonically increases until it reaches a maximum value of 2^32-1
+ (4294967295 decimal), when it wraps around and starts increasing
+ again from zero.
+
+ Counters have no defined "initial" value, and thus, a single value of
+ a Counter has (in general) no information content. Discontinuities
+ in the monotonically increasing value normally occur at re-
+ initialization of the management system, and at other times as
+ specified in the description of an object-type using this ASN.1 type.
+ If such other times can occur, for example, the creation of an object
+ instance at times other than re-initialization, then a corresponding
+ object should be defined, with an appropriate SYNTAX clause, to
+ indicate the last discontinuity. Examples of appropriate SYNTAX
+ clause include: TimeStamp (a textual convention defined in [3]),
+ DateAndTime (another textual convention from [3]) or TimeTicks.
+
+ The value of the MAX-ACCESS clause for objects with a SYNTAX clause
+ value of Counter32 is either "read-only" or "accessible-for-notify".
+
+ A DEFVAL clause is not allowed for objects with a SYNTAX clause value
+ of Counter32.
+
+7.1.7. Gauge32
+
+ The Gauge32 type represents a non-negative integer, which may
+ increase or decrease, but shall never exceed a maximum value, nor
+ fall below a minimum value. The maximum value can not be greater
+ than 2^32-1 (4294967295 decimal), and the minimum value can not be
+ smaller than 0. The value of a Gauge32 has its maximum value
+ whenever the information being modeled is greater than or equal to
+ its maximum value, and has its minimum value whenever the information
+ being modeled is smaller than or equal to its minimum value. If the
+ information being modeled subsequently decreases below (increases
+ above) the maximum (minimum) value, the Gauge32 also decreases
+ (increases). (Note that despite of the use of the term "latched" in
+ the original definition of this type, it does not become "stuck" at
+ its maximum or minimum value.)
+
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 23]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+7.1.8. TimeTicks
+
+ The TimeTicks type represents a non-negative integer which represents
+ the time, modulo 2^32 (4294967296 decimal), in hundredths of a second
+ between two epochs. When objects are defined which use this ASN.1
+ type, the description of the object identifies both of the reference
+ epochs.
+
+ For example, [3] defines the TimeStamp textual convention which is
+ based on the TimeTicks type. With a TimeStamp, the first reference
+ epoch is defined as the time when sysUpTime [5] was zero, and the
+ second reference epoch is defined as the current value of sysUpTime.
+
+ The TimeTicks type may not be sub-typed.
+
+7.1.9. Opaque
+
+ The Opaque type is provided solely for backward-compatibility, and
+ shall not be used for newly-defined object types.
+
+ The Opaque type supports the capability to pass arbitrary ASN.1
+ syntax. A value is encoded using the ASN.1 Basic Encoding Rules [4]
+ into a string of octets. This, in turn, is encoded as an OCTET
+ STRING, in effect "double-wrapping" the original ASN.1 value.
+
+ Note that a conforming implementation need only be able to accept and
+ recognize opaquely-encoded data. It need not be able to unwrap the
+ data and then interpret its contents.
+
+ A requirement on "standard" MIB modules is that no object may have a
+ SYNTAX clause value of Opaque.
+
+7.1.10. Counter64
+
+ The Counter64 type represents a non-negative integer which
+ monotonically increases until it reaches a maximum value of 2^64-1
+ (18446744073709551615 decimal), when it wraps around and starts
+ increasing again from zero.
+
+ Counters have no defined "initial" value, and thus, a single value of
+ a Counter has (in general) no information content. Discontinuities
+ in the monotonically increasing value normally occur at re-
+ initialization of the management system, and at other times as
+ specified in the description of an object-type using this ASN.1 type.
+ If such other times can occur, for example, the creation of an object
+ instance at times other than re-initialization, then a corresponding
+ object should be defined, with an appropriate SYNTAX clause, to
+ indicate the last discontinuity. Examples of appropriate SYNTAX
+
+
+McCloghrie, et al. Standards Track [Page 24]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ clause are: TimeStamp (a textual convention defined in [3]),
+ DateAndTime (another textual convention from [3]) or TimeTicks.
+
+ The value of the MAX-ACCESS clause for objects with a SYNTAX clause
+ value of Counter64 is either "read-only" or "accessible-for-notify".
+
+ A requirement on "standard" MIB modules is that the Counter64 type
+ may be used only if the information being modeled would wrap in less
+ than one hour if the Counter32 type was used instead.
+
+ A DEFVAL clause is not allowed for objects with a SYNTAX clause value
+ of Counter64.
+
+7.1.11. Unsigned32
+
+ The Unsigned32 type represents integer-valued information between 0
+ and 2^32-1 inclusive (0 to 4294967295 decimal).
+
+7.1.12. Conceptual Tables
+
+ Management operations apply exclusively to scalar objects. However,
+ it is sometimes convenient for developers of management applications
+ to impose an imaginary, tabular structure on an ordered collection of
+ objects within the MIB. Each such conceptual table contains zero or
+ more rows, and each row may contain one or more scalar objects,
+ termed columnar objects. This conceptualization is formalized by
+ using the OBJECT-TYPE macro to define both an object which
+ corresponds to a table and an object which corresponds to a row in
+ that table. A conceptual table has SYNTAX of the form:
+
+ SEQUENCE OF <EntryType>
+
+ where <EntryType> refers to the SEQUENCE type of its subordinate
+ conceptual row. A conceptual row has SYNTAX of the form:
+
+ <EntryType>
+
+ where <EntryType> is a SEQUENCE type defined as follows:
+
+ <EntryType> ::= SEQUENCE { <type1>, ... , <typeN> }
+
+ where there is one <type> for each subordinate object, and each
+ <type> is of the form:
+
+ <descriptor> <syntax>
+
+ where <descriptor> is the descriptor naming a subordinate object, and
+ <syntax> has the value of that subordinate object's SYNTAX clause,
+
+
+McCloghrie, et al. Standards Track [Page 25]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ except that both sub-typing information and the named values for
+ enumerated integers or the named bits for the BITS construct, are
+ omitted from <syntax>.
+
+ Further, a <type> is always present for every subordinate object.
+ (The ASN.1 DEFAULT and OPTIONAL clauses are disallowed in the
+ SEQUENCE definition.) The MAX-ACCESS clause for conceptual tables
+ and rows is "not-accessible".
+
+7.1.12.1. Creation and Deletion of Conceptual Rows
+
+ For newly-defined conceptual rows which allow the creation of new
+ object instances and/or the deletion of existing object instances,
+ there should be one columnar object with a SYNTAX clause value of
+ RowStatus (a textual convention defined in [3]) and a MAX-ACCESS
+ clause value of read-create. By convention, this is termed the
+ status column for the conceptual row.
+
+7.2. Mapping of the UNITS clause
+
+ This UNITS clause, which need not be present, contains a textual
+ definition of the units associated with that object.
+
+7.3. Mapping of the MAX-ACCESS clause
+
+ The MAX-ACCESS clause, which must be present, defines whether it
+ makes "protocol sense" to read, write and/or create an instance of
+ the object, or to include its value in a notification. This is the
+ maximal level of access for the object. (This maximal level of
+ access is independent of any administrative authorization policy.)
+
+ The value "read-write" indicates that read and write access make
+ "protocol sense", but create does not. The value "read-create"
+ indicates that read, write and create access make "protocol sense".
+ The value "not-accessible" indicates an auxiliary object (see Section
+ 7.7). The value "accessible-for-notify" indicates an object which is
+ accessible only via a notification (e.g., snmpTrapOID [5]).
+
+ These values are ordered, from least to greatest: "not-accessible",
+ "accessible-for-notify", "read-only", "read-write", "read-create".
+
+ If any columnar object in a conceptual row has "read-create" as its
+ maximal level of access, then no other columnar object of the same
+ conceptual row may have a maximal access of "read-write". (Note that
+ "read-create" is a superset of "read-write".)
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 26]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+7.4. Mapping of the STATUS clause
+
+ The STATUS clause, which must be present, indicates whether this
+ definition is current or historic.
+
+ The value "current" means that the definition is current and valid.
+ The value "obsolete" means the definition is obsolete and should not
+ be implemented and/or can be removed if previously implemented.
+ While the value "deprecated" also indicates an obsolete definition,
+ it permits new/continued implementation in order to foster
+ interoperability with older/existing implementations.
+
+7.5. Mapping of the DESCRIPTION clause
+
+ The DESCRIPTION clause, which must be present, contains a textual
+ definition of that object which provides all semantic definitions
+ necessary for implementation, and should embody any information which
+ would otherwise be communicated in any ASN.1 commentary annotations
+ associated with the object.
+
+7.6. Mapping of the REFERENCE clause
+
+ The REFERENCE clause, which need not be present, contains a textual
+ cross-reference to some other document, either another information
+ module which defines a related assignment, or some other document
+ which provides additional information relevant to this definition.
+
+7.7. Mapping of the INDEX clause
+
+ The INDEX clause, which must be present if that object corresponds to
+ a conceptual row (unless an AUGMENTS clause is present instead), and
+ must be absent otherwise, defines instance identification information
+ for the columnar objects subordinate to that object.
+
+ The instance identification information in an INDEX clause must
+ specify object(s) such that value(s) of those object(s) will
+ unambiguously distinguish a conceptual row. The objects can be
+ columnar objects from the same and/or another conceptual table, but
+ must not be scalar objects. Multiple occurrences of the same object
+ in a single INDEX clause is strongly discouraged.
+
+ The syntax of the objects in the INDEX clause indicate how to form
+ the instance-identifier:
+
+(1) integer-valued (i.e., having INTEGER as its underlying primitive
+ type): a single sub-identifier taking the integer value (this
+ works only for non-negative integers);
+
+
+
+McCloghrie, et al. Standards Track [Page 27]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+(2) string-valued, fixed-length strings (or variable-length preceded by
+ the IMPLIED keyword): `n' sub-identifiers, where `n' is the length
+ of the string (each octet of the string is encoded in a separate
+ sub-identifier);
+
+(3) string-valued, variable-length strings (not preceded by the IMPLIED
+ keyword): `n+1' sub-identifiers, where `n' is the length of the
+ string (the first sub-identifier is `n' itself, following this,
+ each octet of the string is encoded in a separate sub-identifier);
+
+(4) object identifier-valued (when preceded by the IMPLIED keyword):
+ `n' sub-identifiers, where `n' is the number of sub-identifiers in
+ the value (each sub-identifier of the value is copied into a
+ separate sub-identifier);
+
+(5) object identifier-valued (when not preceded by the IMPLIED
+ keyword): `n+1' sub-identifiers, where `n' is the number of sub-
+ identifiers in the value (the first sub-identifier is `n' itself,
+ following this, each sub-identifier in the value is copied);
+
+(6) IpAddress-valued: 4 sub-identifiers, in the familiar a.b.c.d
+ notation.
+
+ Note that the IMPLIED keyword can only be present for an object
+ having a variable-length syntax (e.g., variable-length strings or
+ object identifier-valued objects), Further, the IMPLIED keyword can
+ only be associated with the last object in the INDEX clause.
+ Finally, the IMPLIED keyword may not be used on a variable-length
+ string object if that string might have a value of zero-length.
+
+ Since a single value of a Counter has (in general) no information
+ content (see section 7.1.6 and 7.1.10), objects defined using the
+ syntax, Counter32 or Counter64, must not be specified in an INDEX
+
+ clause. If an object defined using the BITS construct is used in an
+ INDEX clause, it is considered a variable-length string.
+
+ Instances identified by use of integer-valued objects should be
+ numbered starting from one (i.e., not from zero). The use of zero as
+ a value for an integer-valued index object should be avoided, except
+ in special cases.
+
+ Objects which are both specified in the INDEX clause of a conceptual
+ row and also columnar objects of the same conceptual row are termed
+ auxiliary objects. The MAX-ACCESS clause for auxiliary objects is
+ "not-accessible", except in the following circumstances:
+
+
+
+
+McCloghrie, et al. Standards Track [Page 28]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+(1) within a MIB module originally written to conform to SMIv1, and
+ later converted to conform to SMIv2; or
+
+(2) a conceptual row must contain at least one columnar object which is
+ not an auxiliary object. In the event that all of a conceptual
+ row's columnar objects are also specified in its INDEX clause, then
+ one of them must be accessible, i.e., have a MAX-ACCESS clause of
+ "read-only". (Note that this situation does not arise for a
+ conceptual row allowing create access, since such a row will have a
+ status column which will not be an auxiliary object.)
+
+ Note that objects specified in a conceptual row's INDEX clause need
+ not be columnar objects of that conceptual row. In this situation,
+ the DESCRIPTION clause of the conceptual row must include a textual
+ explanation of how the objects which are included in the INDEX clause
+ but not columnar objects of that conceptual row, are used in uniquely
+ identifying instances of the conceptual row's columnar objects.
+
+7.8. Mapping of the AUGMENTS clause
+
+ The AUGMENTS clause, which must not be present unless the object
+ corresponds to a conceptual row, is an alternative to the INDEX
+ clause. Every object corresponding to a conceptual row has either an
+ INDEX clause or an AUGMENTS clause.
+
+ If an object corresponding to a conceptual row has an INDEX clause,
+ that row is termed a base conceptual row; alternatively, if the
+ object has an AUGMENTS clause, the row is said to be a conceptual row
+ augmentation, where the AUGMENTS clause names the object
+ corresponding to the base conceptual row which is augmented by this
+ conceptual row augmentation. (Thus, a conceptual row augmentation
+ cannot itself be augmented.) Instances of subordinate columnar
+ objects of a conceptual row augmentation are identified according to
+ the INDEX clause of the base conceptual row corresponding to the
+ object named in the AUGMENTS clause. Further, instances of
+ subordinate columnar objects of a conceptual row augmentation exist
+ according to the same semantics as instances of subordinate columnar
+ objects of the base conceptual row being augmented. As such, note
+ that creation of a base conceptual row implies the correspondent
+ creation of any conceptual row augmentations.
+
+ For example, a MIB designer might wish to define additional columns
+ in an "enterprise-specific" MIB which logically extend a conceptual
+ row in a "standard" MIB. The "standard" MIB definition of the
+ conceptual row would include the INDEX clause and the "enterprise-
+ specific" MIB would contain the definition of a conceptual row using
+ the AUGMENTS clause. On the other hand, it would be incorrect to use
+ the AUGMENTS clause for the relationship between RFC 2233's ifTable
+
+
+McCloghrie, et al. Standards Track [Page 29]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ and the many media-specific MIBs which extend it for specific media
+ (e.g., the dot3Table in RFC 2358), since not all interfaces are of
+ the same media.
+
+ Note that a base conceptual row may be augmented by multiple
+ conceptual row augmentations.
+
+7.8.1. Relation between INDEX and AUGMENTS clauses
+
+ When defining instance identification information for a conceptual
+ table:
+
+(1) If there is a one-to-one correspondence between the conceptual rows
+ of this table and an existing table, then the AUGMENTS clause
+ should be used.
+
+(2) Otherwise, if there is a sparse relationship between the conceptual
+ rows of this table and an existing table, then an INDEX clause
+ should be used which is identical to that in the existing table.
+ For example, the relationship between RFC 2233's ifTable and a
+ media-specific MIB which extends the ifTable for a specific media
+ (e.g., the dot3Table in RFC 2358), is a sparse relationship.
+
+(3) Otherwise, if no existing objects have the required syntax and
+ semantics, then auxiliary objects should be defined within the
+ conceptual row for the new table, and those objects should be used
+ within the INDEX clause for the conceptual row.
+
+7.9. Mapping of the DEFVAL clause
+
+ The DEFVAL clause, which need not be present, defines an acceptable
+ default value which may be used at the discretion of an agent when an
+ object instance is created. That is, the value is a "hint" to
+ implementors.
+
+ During conceptual row creation, if an instance of a columnar object
+ is not present as one of the operands in the correspondent management
+ protocol set operation, then the value of the DEFVAL clause, if
+ present, indicates an acceptable default value that an agent might
+ use (especially for a read-only object).
+
+ Note that with this definition of the DEFVAL clause, it is
+ appropriate to use it for any columnar object of a read-create table.
+ It is also permitted to use it for scalar objects dynamically created
+ by an agent, or for columnar objects of a read-write table
+ dynamically created by an agent.
+
+
+
+
+McCloghrie, et al. Standards Track [Page 30]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ The value of the DEFVAL clause must, of course, correspond to the
+ SYNTAX clause for the object. If the value is an OBJECT IDENTIFIER,
+ then it must be expressed as a single ASN.1 identifier, and not as a
+ collection of sub-identifiers.
+
+ Note that if an operand to the management protocol set operation is
+ an instance of a read-only object, then the error `notWritable' [6]
+ will be returned. As such, the DEFVAL clause can be used to provide
+ an acceptable default value that an agent might use.
+
+ By way of example, consider the following possible DEFVAL clauses:
+
+ ObjectSyntax DEFVAL clause
+ ---------------- ------------
+ Integer32 DEFVAL { 1 }
+ -- same for Gauge32, TimeTicks, Unsigned32
+ INTEGER DEFVAL { valid } -- enumerated value
+ OCTET STRING DEFVAL { 'ffffffffffff'H }
+ DisplayString DEFVAL { "SNMP agent" }
+ IpAddress DEFVAL { 'c0210415'H } -- 192.33.4.21
+ OBJECT IDENTIFIER DEFVAL { sysDescr }
+ BITS DEFVAL { { primary, secondary } }
+ -- enumerated values that are set
+ BITS DEFVAL { { } }
+ -- no enumerated values are set
+
+ A binary string used in a DEFVAL clause for an OCTET STRING must be
+ either an integral multiple of eight or zero bits in length;
+ similarly, a hexadecimal string must be an even number of hexadecimal
+ digits. The value of a character string used in a DEFVAL clause must
+ not contain tab characters or line terminator characters.
+
+ Object types with SYNTAX of Counter32 and Counter64 may not have
+ DEFVAL clauses, since they do not have defined initial values.
+ However, it is recommended that they be initialized to zero.
+
+7.10. Mapping of the OBJECT-TYPE value
+
+ The value of an invocation of the OBJECT-TYPE macro is the name of
+ the object, which is an OBJECT IDENTIFIER, an administratively
+ assigned name.
+
+ When an OBJECT IDENTIFIER is assigned to an object:
+
+(1) If the object corresponds to a conceptual table, then only a single
+ assignment, that for a conceptual row, is present immediately
+ beneath that object. The administratively assigned name for the
+ conceptual row object is derived by appending a sub-identifier of
+
+
+McCloghrie, et al. Standards Track [Page 31]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ "1" to the administratively assigned name for the conceptual table.
+
+(2) If the object corresponds to a conceptual row, then at least one
+ assignment, one for each column in the conceptual row, is present
+ beneath that object. The administratively assigned name for each
+ column is derived by appending a unique, positive sub-identifier to
+ the administratively assigned name for the conceptual row.
+
+(3) Otherwise, no other OBJECT IDENTIFIERs which are subordinate to the
+ object may be assigned.
+
+ Note that the final sub-identifier of any administratively assigned
+ name for an object shall be positive. A zero-valued final sub-
+ identifier is reserved for future use.
+
+7.11. Usage Example
+
+ Consider how one might define a conceptual table and its
+ subordinates. (This example uses the RowStatus textual convention
+ defined in [3].)
+
+ evalSlot OBJECT-TYPE
+ SYNTAX Integer32 (0..2147483647)
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The index number of the first unassigned entry in the
+ evaluation table, or the value of zero indicating that
+ all entries are assigned.
+
+ A management station should create new entries in the
+ evaluation table using this algorithm: first, issue a
+ management protocol retrieval operation to determine the
+ value of evalSlot; and, second, issue a management
+ protocol set operation to create an instance of the
+ evalStatus object setting its value to createAndGo(4) or
+ createAndWait(5). If this latter operation succeeds,
+ then the management station may continue modifying the
+ instances corresponding to the newly created conceptual
+ row, without fear of collision with other management
+ stations."
+ ::= { eval 1 }
+
+ evalTable OBJECT-TYPE
+ SYNTAX SEQUENCE OF EvalEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+
+
+McCloghrie, et al. Standards Track [Page 32]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ "The (conceptual) evaluation table."
+ ::= { eval 2 }
+
+ evalEntry OBJECT-TYPE
+ SYNTAX EvalEntry
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "An entry (conceptual row) in the evaluation table."
+ INDEX { evalIndex }
+ ::= { evalTable 1 }
+
+ EvalEntry ::=
+ SEQUENCE {
+ evalIndex Integer32,
+ evalString DisplayString,
+ evalValue Integer32,
+ evalStatus RowStatus
+ }
+
+ evalIndex OBJECT-TYPE
+ SYNTAX Integer32 (1..2147483647)
+ MAX-ACCESS not-accessible
+ STATUS current
+ DESCRIPTION
+ "The auxiliary variable used for identifying instances of
+ the columnar objects in the evaluation table."
+ ::= { evalEntry 1 }
+
+ evalString OBJECT-TYPE
+ SYNTAX DisplayString
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The string to evaluate."
+ ::= { evalEntry 2 }
+
+ evalValue OBJECT-TYPE
+ SYNTAX Integer32
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The value when evalString was last evaluated, or zero if
+ no such value is available."
+ DEFVAL { 0 }
+ ::= { evalEntry 3 }
+
+ evalStatus OBJECT-TYPE
+
+
+McCloghrie, et al. Standards Track [Page 33]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ SYNTAX RowStatus
+ MAX-ACCESS read-create
+ STATUS current
+ DESCRIPTION
+ "The status column used for creating, modifying, and
+ deleting instances of the columnar objects in the
+ evaluation table."
+ DEFVAL { active }
+ ::= { evalEntry 4 }
+
+8. Mapping of the NOTIFICATION-TYPE macro
+
+ The NOTIFICATION-TYPE macro is used to define the information
+ contained within an unsolicited transmission of management
+ information (i.e., within either a SNMPv2-Trap-PDU or InformRequest-
+ PDU). It should be noted that the expansion of the NOTIFICATION-TYPE
+ macro is something which conceptually happens during implementation
+ and not during run-time.
+
+8.1. Mapping of the OBJECTS clause
+
+ The OBJECTS clause, which need not be present, defines an ordered
+ sequence of MIB object types. One and only one object instance for
+ each occurrence of each object type must be present, and in the
+ specified order, in every instance of the notification. If the same
+ object type occurs multiple times in a notification's ordered
+ sequence, then an object instance is present for each of them. An
+ object type specified in this clause must not have an MAX-ACCESS
+ clause of "not-accessible". The notification's DESCRIPTION clause
+ must specify the information/meaning conveyed by each occurrence of
+ each object type in the sequence. The DESCRIPTION clause must also
+ specify which object instance is present for each object type in the
+ notification.
+
+ Note that an agent is allowed, at its own discretion, to append as
+ many additional objects as it considers useful to the end of the
+ notification (i.e., after the objects defined by the OBJECTS clause).
+
+8.2. Mapping of the STATUS clause
+
+ The STATUS clause, which must be present, indicates whether this
+ definition is current or historic.
+
+ The value "current" means that the definition is current and valid.
+ The value "obsolete" means the definition is obsolete and should not
+ be implemented and/or can be removed if previously implemented.
+ While the value "deprecated" also indicates an obsolete definition,
+ it permits new/continued implementation in order to foster
+
+
+McCloghrie, et al. Standards Track [Page 34]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ interoperability with older/existing implementations.
+
+8.3. Mapping of the DESCRIPTION clause
+
+ The DESCRIPTION clause, which must be present, contains a textual
+ definition of the notification which provides all semantic
+ definitions necessary for implementation, and should embody any
+ information which would otherwise be communicated in any ASN.1
+ commentary annotations associated with the notification. In
+ particular, the DESCRIPTION clause should document which instances of
+ the objects mentioned in the OBJECTS clause should be contained
+ within notifications of this type.
+
+8.4. Mapping of the REFERENCE clause
+
+ The REFERENCE clause, which need not be present, contains a textual
+ cross-reference to some other document, either another information
+ module which defines a related assignment, or some other document
+ which provides additional information relevant to this definition.
+
+8.5. Mapping of the NOTIFICATION-TYPE value
+
+ The value of an invocation of the NOTIFICATION-TYPE macro is the name
+ of the notification, which is an OBJECT IDENTIFIER, an
+ administratively assigned name. In order to achieve compatibility
+ with SNMPv1 traps, both when converting SMIv1 information modules
+ to/from this SMI, and in the procedures employed by multi-lingual
+ systems and proxy forwarding applications, the next to last sub-
+ identifier in the name of any newly-defined notification must have
+ the value zero.
+
+ Sections 4.2.6 and 4.2.7 of [6] describe how the NOTIFICATION-TYPE
+ macro is used to generate a SNMPv2-Trap-PDU or InformRequest-PDU,
+ respectively.
+
+8.6. Usage Example
+
+ Consider how a configuration change notification might be described:
+
+ entityMIBTraps OBJECT IDENTIFIER ::= { entityMIB 2 }
+ entityMIBTrapPrefix OBJECT IDENTIFIER ::= { entityMIBTraps 0 }
+
+ entConfigChange NOTIFICATION-TYPE
+ STATUS current
+ DESCRIPTION
+ "An entConfigChange trap is sent when the value of
+ entLastChangeTime changes. It can be utilized by an NMS to
+ trigger logical/physical entity table maintenance polls.
+
+
+McCloghrie, et al. Standards Track [Page 35]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+
+ An agent must not generate more than one entConfigChange
+ 'trap-event' in a five second period, where a 'trap-event'
+ is the transmission of a single trap PDU to a list of
+ trap destinations. If additional configuration changes
+ occur within the five second 'throttling' period, then
+ these trap-events should be suppressed by the agent. An
+ NMS should periodically check the value of
+ entLastChangeTime to detect any missed entConfigChange
+ trap-events, e.g. due to throttling or transmission loss."
+ ::= { entityMIBTrapPrefix 1 }
+
+ According to this invocation, the notification authoritatively
+ identified as
+
+ { entityMIBTrapPrefix 1 }
+
+ is used to report a particular type of configuration change.
+
+9. Refined Syntax
+
+ Some macros have clauses which allows syntax to be refined,
+ specifically: the SYNTAX clause of the OBJECT-TYPE macro, and the
+ SYNTAX/WRITE-SYNTAX clauses of the MODULE-COMPLIANCE and AGENT-
+ CAPABILITIES macros [2]. However, not all refinements of syntax are
+ appropriate. In particular, the object's primitive or application
+ type must not be changed.
+
+ Further, the following restrictions apply:
+
+ Restrictions to Refinement of
+ object syntax range enumeration size
+ ----------------- ----- ----------- ----
+ INTEGER (1) (2) -
+ Integer32 (1) - -
+ Unsigned32 (1) - -
+ OCTET STRING - - (3)
+ OBJECT IDENTIFIER - - -
+ BITS - (2) -
+ IpAddress - - -
+ Counter32 - - -
+ Counter64 - - -
+ Gauge32 (1) - -
+ TimeTicks - - -
+
+ where:
+
+
+
+
+McCloghrie, et al. Standards Track [Page 36]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+(1) the range of permitted values may be refined by raising the lower-
+ bounds, by reducing the upper-bounds, and/or by reducing the
+ alternative value/range choices;
+
+(2) the enumeration of named-values may be refined by removing one or
+ more named-values (note that for BITS, a refinement may cause the
+ enumerations to no longer be contiguous); or,
+
+(3) the size in octets of the value may be refined by raising the
+ lower-bounds, by reducing the upper-bounds, and/or by reducing the
+ alternative size choices.
+
+ No other types of refinements can be specified in the SYNTAX clause.
+ However, the DESCRIPTION clause is available to specify additional
+ restrictions which can not be expressed in the SYNTAX clause.
+ Further details on (and examples of) sub-typing are provided in
+ Appendix A.
+
+10. Extending an Information Module
+
+ As experience is gained with an information module, it may be
+ desirable to revise that information module. However, changes are
+ not allowed if they have any potential to cause interoperability
+ problems "over the wire" between an implementation using an original
+ specification and an implementation using an updated
+ specification(s).
+
+ For any change, the invocation of the MODULE-IDENTITY macro must be
+ updated to include information about the revision: specifically,
+ updating the LAST-UPDATED clause, adding a pair of REVISION and
+ DESCRIPTION clauses (see section 5.5), and making any necessary
+ changes to existing clauses, including the ORGANIZATION and CONTACT-
+ INFO clauses.
+
+ Note that any definition contained in an information module is
+ available to be IMPORT-ed by any other information module, and is
+ referenced in an IMPORTS clause via the module name. Thus, a module
+ name should not be changed. Specifically, the module name (e.g.,
+ "FIZBIN-MIB" in the example of Section 5.7) should not be changed
+ when revising an information module (except to correct typographical
+ errors), and definitions should not be moved from one information
+ module to another.
+
+ Also note that obsolete definitions must not be removed from MIB
+ modules since their descriptors may still be referenced by other
+ information modules, and the OBJECT IDENTIFIERs used to name them
+ must never be re-assigned.
+
+
+
+McCloghrie, et al. Standards Track [Page 37]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+10.1. Object Assignments
+
+ If any non-editorial change is made to any clause of a object
+ assignment, then the OBJECT IDENTIFIER value associated with that
+ object assignment must also be changed, along with its associated
+ descriptor.
+
+10.2. Object Definitions
+
+ An object definition may be revised in any of the following ways:
+
+(1) A SYNTAX clause containing an enumerated INTEGER may have new
+ enumerations added or existing labels changed. Similarly, named
+ bits may be added or existing labels changed for the BITS
+ construct.
+
+(2) The value of a SYNTAX clause may be replaced by a textual
+ convention, providing the textual convention is defined to use the
+ same primitive ASN.1 type, has the same set of values, and has
+ identical semantics.
+
+(3) A STATUS clause value of "current" may be revised as "deprecated"
+ or "obsolete". Similarly, a STATUS clause value of "deprecated"
+ may be revised as "obsolete". When making such a change, the
+ DESCRIPTION clause should be updated to explain the rationale.
+
+(4) A DEFVAL clause may be added or updated.
+
+(5) A REFERENCE clause may be added or updated.
+
+(6) A UNITS clause may be added.
+
+(7) A conceptual row may be augmented by adding new columnar objects at
+ the end of the row, and making the corresponding update to the
+ SEQUENCE definition.
+
+(8) Clarifications and additional information may be included in the
+ DESCRIPTION clause.
+
+(9) Entirely new objects may be defined, named with previously
+ unassigned OBJECT IDENTIFIER values.
+
+ Otherwise, if the semantics of any previously defined object are
+ changed (i.e., if a non-editorial change is made to any clause other
+ than those specifically allowed above), then the OBJECT IDENTIFIER
+ value associated with that object must also be changed.
+
+
+
+
+McCloghrie, et al. Standards Track [Page 38]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ Note that changing the descriptor associated with an existing object
+ is considered a semantic change, as these strings may be used in an
+ IMPORTS statement.
+
+10.3. Notification Definitions
+
+ A notification definition may be revised in any of the following
+ ways:
+
+(1) A REFERENCE clause may be added or updated.
+
+(2) A STATUS clause value of "current" may be revised as "deprecated"
+ or "obsolete". Similarly, a STATUS clause value of "deprecated"
+ may be revised as "obsolete". When making such a change, the
+ DESCRIPTION clause should be updated to explain the rationale.
+
+(3) A DESCRIPTION clause may be clarified.
+
+ Otherwise, if the semantics of any previously defined notification
+ are changed (i.e., if a non-editorial change is made to any clause
+ other those specifically allowed above), then the OBJECT IDENTIFIER
+ value associated with that notification must also be changed.
+
+ Note that changing the descriptor associated with an existing
+ notification is considered a semantic change, as these strings may be
+ used in an IMPORTS statement.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 39]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+11. Appendix A: Detailed Sub-typing Rules
+
+
+11.1. Syntax Rules
+
+ The syntax rules for sub-typing are given below. Note that while
+ this syntax is based on ASN.1, it includes some extensions beyond
+ what is allowed in ASN.1, and a number of ASN.1 constructs are not
+ allowed by this syntax.
+
+ <integerSubType>
+ ::= <empty>
+ | "(" <range> ["|" <range>]... ")"
+
+ <octetStringSubType>
+ ::= <empty>
+ | "(" "SIZE" "(" <range> ["|" <range>]... ")" ")"
+
+ <range>
+ ::= <value>
+ | <value> ".." <value>
+
+ <value>
+ ::= "-" <number>
+ | <number>
+ | <hexString>
+ | <binString>
+
+ where:
+ <empty> is the empty string
+ <number> is a non-negative integer
+ <hexString> is a hexadecimal string (e.g., '0F0F'H)
+ <binString> is a binary string (e.g, '1010'B)
+
+ <range> is further restricted as follows:
+ - any <value> used in a SIZE clause must be non-negative.
+ - when a pair of values is specified, the first value
+ must be less than the second value.
+ - when multiple ranges are specified, the ranges may
+ not overlap but may touch. For example, (1..4 | 4..9)
+ is invalid, and (1..4 | 5..9) is valid.
+ - the ranges must be a subset of the maximum range of the
+ base type.
+
+
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 40]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+11.2. Examples
+
+ Some examples of legal sub-typing:
+
+ Integer32 (-20..100)
+ Integer32 (0..100 | 300..500)
+ Integer32 (300..500 | 0..100)
+ Integer32 (0 | 2 | 4 | 6 | 8 | 10)
+ OCTET STRING (SIZE(0..100))
+ OCTET STRING (SIZE(0..100 | 300..500))
+ OCTET STRING (SIZE(0 | 2 | 4 | 6 | 8 | 10))
+ SYNTAX TimeInterval (0..100)
+ SYNTAX DisplayString (SIZE(0..32))
+
+ (Note the last two examples above are not valid in a TEXTUAL
+ CONVENTION, see [3].)
+
+ Some examples of illegal sub-typing:
+
+ Integer32 (150..100) -- first greater than second
+ Integer32 (0..100 | 50..500) -- ranges overlap
+ Integer32 (0 | 2 | 0 ) -- value duplicated
+ Integer32 (MIN..-1 | 1..MAX) -- MIN and MAX not allowed
+ Integer32 (SIZE (0..34)) -- must not use SIZE
+ OCTET STRING (0..100) -- must use SIZE
+ OCTET STRING (SIZE(-10..100)) -- negative SIZE
+
+12. Security Considerations
+
+ This document defines a language with which to write and read
+ descriptions of management information. The language itself has no
+ security impact on the Internet.
+
+
+
+13. Editors' Addresses
+
+ Keith McCloghrie
+ Cisco Systems, Inc.
+ 170 West Tasman Drive
+ San Jose, CA 95134-1706
+ USA
+ Phone: +1 408 526 5260
+ EMail: kzm@cisco.com
+
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 41]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+ David Perkins
+ SNMPinfo
+ 3763 Benton Street
+ Santa Clara, CA 95051
+ USA
+ Phone: +1 408 221-8702
+ EMail: dperkins@snmpinfo.com
+
+ Juergen Schoenwaelder
+ TU Braunschweig
+ Bueltenweg 74/75
+ 38106 Braunschweig
+ Germany
+ Phone: +49 531 391-3283
+ EMail: schoenw@ibr.cs.tu-bs.de
+
+
+14. References
+
+[1] Information processing systems - Open Systems Interconnection -
+ Specification of Abstract Syntax Notation One (ASN.1),
+ International Organization for Standardization. International
+ Standard 8824, (December, 1987).
+
+[2] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M.
+ and S. Waldbusser, "Conformance Statements for SMIv2", STD 58,
+ RFC 2580, April 1999.
+
+[3] McCloghrie, K., Perkins, D., Schoenwaelder, J., Case, J., Rose, M.
+ and S. Waldbusser, "Textual Conventions for SMIv2", STD 58,
+ RFC 2579, April 1999.
+
+[4] Information processing systems - Open Systems Interconnection -
+ Specification of Basic Encoding Rules for Abstract Syntax Notation
+ One (ASN.1), International Organization for Standardization.
+ International Standard 8825, (December, 1987).
+
+[5] The SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and
+ S. Waldbusser, "Management Information Base for Version 2 of the
+ Simple Network Management Protocol (SNMPv2)", RFC 1907, January
+ 1996.
+
+[6] The SNMPv2 Working Group, Case, J., McCloghrie, K., Rose, M. and
+ S. Waldbusser, "Protocol Operations for Version 2 of the Simple
+ Network Management Protocol (SNMPv2)", RFC 1905, January 1996.
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 42]
+
+
+
+
+
+RFC 2578 SMIv2 April 1999
+
+
+15. Full Copyright Statement
+
+ Copyright (C) The Internet Society (1999). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
+ TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
+ HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE."
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+McCloghrie, et al. Standards Track [Page 43]
+
+
+
+
+