2542 lines
88 KiB
Plaintext
2542 lines
88 KiB
Plaintext
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
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]
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|