draft-ietf-snmpv2-smi-ds-00.txt   draft-ietf-snmpv2-smi-ds-01.txt 
Structure of Management Information Structure of Management Information
for Version 2 of the for Version 2 of the
Simple Network Management Protocol (SNMPv2) Simple Network Management Protocol (SNMPv2)
1 November 1994 19 March 1995 |
draft-ietf-snmpv2-smi-ds-01.txt |
Jeffrey D. Case Jeffrey D. Case
SNMP Research, Inc. SNMP Research, Inc.
case@snmp.com case@snmp.com
Keith McCloghrie Keith McCloghrie
Cisco Systems, Inc. Cisco Systems, Inc.
kzm@cisco.com kzm@cisco.com
Marshall T. Rose Marshall T. Rose
Dover Beach Consulting, Inc. Dover Beach Consulting, Inc.
mrose@dbc.mtview.ca.us mrose@dbc.mtview.ca.us
Steven Waldbusser Steven Waldbusser
Carnegie Mellon University Carnegie Mellon University
waldbusser@cmu.edu waldbusser@cmu.edu
<draft-ietf-snmpv2-smi-ds-00.txt>
Status of this Memo Status of this Memo
This document is an Internet-Draft. Internet-Drafts are working This document is an Internet-Draft. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and documents of the Internet Engineering Task Force (IETF), its areas, and
its working groups. Note that other groups may also distribute working its working groups. Note that other groups may also distribute working
documents as Internet-Drafts. documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet- Drafts as reference material time. It is inappropriate to use Internet- Drafts as reference material
skipping to change at page 3, line 7 skipping to change at page 4, line 7
1.1. A Note on Terminology 1.1. A Note on Terminology
For the purpose of exposition, the original Internet-standard Network For the purpose of exposition, the original Internet-standard Network
Management Framework, as described in RFCs 1155, 1157, and 1212, is Management Framework, as described in RFCs 1155, 1157, and 1212, is
termed the SNMP version 1 framework (SNMPv1). The current framework is termed the SNMP version 1 framework (SNMPv1). The current framework is
termed the SNMP version 2 framework (SNMPv2). termed the SNMP version 2 framework (SNMPv2).
1.2. Change Log 1.2. Change Log
For the 19 March version: +
- The changes adopted by the SNMPv2 Working Group. +
For the 1 November version: For the 1 November version:
- recast RFC 1442 into an Internet-Draft, - recast RFC 1442 into an Internet-Draft,
- fixed typos - fixed typos
- referred sub-typing restrictions to Section 9, - referred sub-typing restrictions to Section 9,
- stated explicitly the restrictions on enumeration labels, - stated explicitly the restrictions on enumeration labels,
- specified a restriction on the length of a BIT STRING as TBD bits, - -
included the restriction on sub-typing of TimeTicks in section
- included the restriction on sub-typing of TimeTicks in section
7.1.8, 7.1.8,
- added a rule for the use of IMPLIED with oid-valued INDEX - added a rule for the use of IMPLIED with oid-valued INDEX
variables, variables,
- clarified the circumstances under which auxiliary variables do not - clarified the circumstances under which auxiliary variables do not
have a MAX-ACCESS clause of "not-accessible", have a MAX-ACCESS clause of "not-accessible",
- clarified the description of conceptual row augmentations, and - clarified the description of conceptual row augmentations, and
added examples, added examples,
skipping to change at page 6, line 17 skipping to change at page 7, line 17
TYPE NOTATION ::= TYPE NOTATION ::=
"STATUS" Status "STATUS" Status
"DESCRIPTION" Text "DESCRIPTION" Text
ReferPart ReferPart
VALUE NOTATION ::= VALUE NOTATION ::=
value(VALUE OBJECT IDENTIFIER) value(VALUE OBJECT IDENTIFIER)
Status ::= Status ::=
"current" "current"
| "deprecated" +
| "obsolete" | "obsolete"
ReferPart ::= ReferPart ::=
"REFERENCE" Text "REFERENCE" Text
| empty | empty
Text ::= """" string """" Text ::= """" string """"
END END
-- names of objects -- names of objects
ObjectName ::= ObjectName ::=
OBJECT IDENTIFIER OBJECT IDENTIFIER
NotificationName ::= +
OBJECT IDENTIFIER +
-- syntax of objects -- syntax of objects
ObjectSyntax ::= ObjectSyntax ::=
CHOICE { CHOICE {
simple simple
SimpleSyntax, SimpleSyntax,
-- note that SEQUENCEs for conceptual tables and -- note that SEQUENCEs for conceptual tables and
-- rows are not mentioned here... -- rows are not mentioned here...
skipping to change at page 7, line 33 skipping to change at page 8, line 36
-- built-in ASN.1 types -- built-in ASN.1 types
SimpleSyntax ::= SimpleSyntax ::=
CHOICE { CHOICE {
-- INTEGERs with a more restrictive range -- INTEGERs with a more restrictive range
-- may also be used -- may also be used
integer-value -- includes Integer32 integer-value -- includes Integer32
INTEGER (-2147483648..2147483647), INTEGER (-2147483648..2147483647),
-- OCTET STRINGs with a more restrictive size +
-- may also be used +
string-value string-value
OCTET STRING, OCTET STRING (SIZE (0..65535)), |
objectID-value objectID-value
OBJECT IDENTIFIER, OBJECT IDENTIFIER |
-- only the enumerated form is allowed
bit-value
BIT STRING
} }
-- indistinguishable from INTEGER, but never needs more than -- indistinguishable from INTEGER, but never needs more than
-- 32-bits for a two's complement representation -- 32-bits for a two's complement representation
Integer32 ::= Integer32 ::=
[UNIVERSAL 2] [UNIVERSAL 2]
IMPLICIT INTEGER (-2147483648..2147483647) IMPLICIT INTEGER (-2147483648..2147483647)
-- application-wide types -- application-wide types
skipping to change at page 8, line 36 skipping to change at page 9, line 36
arbitrary-value arbitrary-value
Opaque, Opaque,
nsapAddress-value nsapAddress-value
NsapAddress, NsapAddress,
big-counter-value big-counter-value
Counter64, Counter64,
old-unsigned-integer-value +
UInteger32, +
unsigned-integer-value unsigned-integer-value
UInteger32 Unsigned32 |
} }
-- in network-byte order -- in network-byte order
-- (this is a tagged type for historical reasons) -- (this is a tagged type for historical reasons)
IpAddress ::= IpAddress ::=
[APPLICATION 0] [APPLICATION 0]
IMPLICIT OCTET STRING (SIZE (4)) IMPLICIT OCTET STRING (SIZE (4))
-- this wraps -- this wraps
Counter32 ::= Counter32 ::=
[APPLICATION 1] [APPLICATION 1]
IMPLICIT INTEGER (0..4294967295) IMPLICIT INTEGER (0..4294967295)
-- this doesn't wrap -- this doesn't wrap
Gauge32 ::= Gauge32 ::=
[APPLICATION 2] [APPLICATION 2]
IMPLICIT INTEGER (0..4294967295) 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 -- hundredths of seconds since an epoch
TimeTicks ::= TimeTicks ::=
[APPLICATION 3] [APPLICATION 3]
IMPLICIT INTEGER (0..4294967295) IMPLICIT INTEGER (0..4294967295)
-- for backward-compatibility only -- for backward-compatibility only
Opaque ::= Opaque ::=
[APPLICATION 4] [APPLICATION 4]
IMPLICIT OCTET STRING IMPLICIT OCTET STRING
skipping to change at page 9, line 36 skipping to change at page 10, line 42
-- (this is a tagged type for historical reasons) -- (this is a tagged type for historical reasons)
NsapAddress ::= NsapAddress ::=
[APPLICATION 5] [APPLICATION 5]
IMPLICIT OCTET STRING (SIZE (1 | 4..21)) IMPLICIT OCTET STRING (SIZE (1 | 4..21))
-- for counters that wrap in less than one hour with only 32 bits -- for counters that wrap in less than one hour with only 32 bits
Counter64 ::= Counter64 ::=
[APPLICATION 6] [APPLICATION 6]
IMPLICIT INTEGER (0..18446744073709551615) IMPLICIT INTEGER (0..18446744073709551615)
-- for backward-compatibility only |
UInteger32 ::= UInteger32 ::=
[APPLICATION 7] [APPLICATION 7]
IMPLICIT INTEGER (0..4294967295) IMPLICIT INTEGER (0..4294967295)
-- definition for objects -- definition for objects
OBJECT-TYPE MACRO ::= OBJECT-TYPE MACRO ::=
BEGIN BEGIN
TYPE NOTATION ::= TYPE NOTATION ::=
"SYNTAX" type(Syntax) "SYNTAX" Syntax |
UnitsPart UnitsPart
"MAX-ACCESS" Access "MAX-ACCESS" Access
"STATUS" Status "STATUS" Status
"DESCRIPTION" Text "DESCRIPTION" Text
ReferPart ReferPart
IndexPart IndexPart
DefValPart DefValPart
VALUE NOTATION ::= VALUE NOTATION ::=
value(VALUE ObjectName) value(VALUE ObjectName)
Syntax ::= +
type(ObjectSyntax) +
| "BITS" "{" Kibbles "}" +
Kibbles ::= +
Kibble +
| Kibbles "," Kibble +
Kibble ::= +
identifier "(" nonNegativeNumber ")" +
UnitsPart ::= UnitsPart ::=
"UNITS" Text "UNITS" Text
| empty | empty
Access ::= Access ::=
"not-accessible" "not-accessible"
| "accessible-for-notify" +
| "read-only" | "read-only"
| "read-write" | "read-write"
| "read-create" | "read-create"
Status ::= Status ::=
"current" "current"
| "deprecated" | "deprecated"
| "obsolete" | "obsolete"
ReferPart ::= ReferPart ::=
skipping to change at page 12, line 16 skipping to change at page 13, line 16
NOTIFICATION-TYPE MACRO ::= NOTIFICATION-TYPE MACRO ::=
BEGIN BEGIN
TYPE NOTATION ::= TYPE NOTATION ::=
ObjectsPart ObjectsPart
"STATUS" Status "STATUS" Status
"DESCRIPTION" Text "DESCRIPTION" Text
ReferPart ReferPart
VALUE NOTATION ::= VALUE NOTATION ::=
value(VALUE OBJECT IDENTIFIER) value(VALUE NotificationName) |
ObjectsPart ::= ObjectsPart ::=
"OBJECTS" "{" Objects "}" "OBJECTS" "{" Objects "}"
| empty | empty
Objects ::= Objects ::=
Object Object
| Objects "," Object | Objects "," Object
Object ::= Object ::=
value(Name ObjectName) value(Name ObjectName)
skipping to change at page 12, line 40 skipping to change at page 13, line 40
| "obsolete" | "obsolete"
ReferPart ::= ReferPart ::=
"REFERENCE" Text "REFERENCE" Text
| empty | empty
-- uses the NVT ASCII character set -- uses the NVT ASCII character set
Text ::= """" string """" Text ::= """" string """"
END END
-- definitions of administrative identifiers +
zeroDotZero OBJECT-IDENTITY +
STATUS current +
DESCRIPTION +
"A value used for null identifiers." +
::= { 0 0 } +
END END
3. Information Modules 3. Information Modules
An "information module" is an ASN.1 module defining information relating An "information module" is an ASN.1 module defining information relating
to network management. to network management.
The SMI describes how to use a subset of ASN.1 to define an information The SMI describes how to use a subset of ASN.1 to define an information
module. Further, additional restrictions are placed on "standard" module. Further, additional restrictions are placed on "standard"
information modules. It is strongly recommended that "enterprise- information modules. It is strongly recommended that "enterprise-
skipping to change at page 13, line 34 skipping to change at page 14, line 34
the AGENT-CAPABILITIES macros [2]. the AGENT-CAPABILITIES macros [2].
This classification scheme does not imply a rigid taxonomy. For This classification scheme does not imply a rigid taxonomy. For
example, a "standard" information module might include definitions of example, a "standard" information module might include definitions of
managed objects and a compliance statement. Similarly, an "enterprise- managed objects and a compliance statement. Similarly, an "enterprise-
specific" information module might include definitions of managed specific" information module might include definitions of managed
objects and a capability statement. Of course, a "standard" information objects and a capability statement. Of course, a "standard" information
module may not contain capability statements. module may not contain capability statements.
All information modules start with exactly one invocation of the All information modules start with exactly one invocation of the
MODULE-IDENTITY macro, which provides contact and revision history. MODULE-IDENTITY macro, which provides contact and revision history. |
This invocation must appear immediately after any IMPORTs or EXPORTs This invocation must appear immediately after any IMPORTs |
statements. statements.
3.1. Macro Invocation 3.1. Macro Invocation
Within an information module, each macro invocation appears as: Within an information module, each macro invocation appears as:
<descriptor> <macro> <clauses> ::= <value> <descriptor> <macro> <clauses> ::= <value>
where <descriptor> corresponds to an ASN.1 identifier, <macro> names the where <descriptor> corresponds to an ASN.1 identifier, <macro> names the
macro being invoked, and <clauses> and <value> depend on the definition macro being invoked, and <clauses> and <value> depend on the definition
of the macro. of the macro. (Note that this definition of a descriptor applies to all +
macros defined in this memo and in [9].) +
An ASN.1 identifier consists of one or more letters, digits, or hyphens. For the purposes of this specification, an ASN.1 identifier consists of |
The initial character must be a lower-case letter, and the final one or more letters or digits, and its initial character must be a |
character may not be a hyphen. Further, a hyphen may not be lower-case letter. (Note that hyphens are not allowed by this |
immediatedly followed by another hyphen. specification, even though hyphen is allowed by [1]. This restriction |
enables arithmetic expressions in languages which use the minus sign to |
reference these descriptors without ambiguity.) |
For all descriptors appearing in an information module, the descriptor For all descriptors appearing in an information module, the descriptor
shall be unique and mnemonic, and shall not exceed 64 characters in shall be unique and mnemonic, and shall not exceed 64 characters in
length. This promotes a common language for humans to use when length. This promotes a common language for humans to use when
discussing the information module and also facilitates simple table discussing the information module and also facilitates simple table
mappings for user-interfaces. mappings for user-interfaces.
The set of descriptors defined in all "standard" information modules The set of descriptors defined in all "standard" information modules
shall be unique. Further, within any information module, the hyphen is shall be unique. -
not allowed as a character in any descriptor.
Finally, by convention, if the descriptor refers to an object with a Finally, by convention, if the descriptor refers to an object with a
SYNTAX clause value of either Counter32 or Counter64, then the SYNTAX clause value of either Counter32 or Counter64, then the
descriptor used for the object should denote plurality. descriptor used for the object should denote plurality.
3.1.1. Textual Clauses 3.1.1. Textual Clauses
Some clauses in a macro invocation may take a textual value (e.g., the Some clauses in a macro invocation may take a textual value (e.g., the
DESCRIPTION clause). Note that, in order to conform to the ASN.1 DESCRIPTION clause). Note that, in order to conform to the ASN.1
syntax, the entire value of these clauses must be enclosed in double syntax, the entire value of these clauses must be enclosed in double
skipping to change at page 17, line 16 skipping to change at page 18, line 16
The MODULE-IDENTITY macro is used to provide contact and revision The MODULE-IDENTITY macro is used to provide contact and revision
history for each information module. It must appear exactly once in history for each information module. It must appear exactly once in
every information module. It should be noted that the expansion of the every information module. It should be noted that the expansion of the
MODULE-IDENTITY macro is something which conceptually happens during MODULE-IDENTITY macro is something which conceptually happens during
implementation and not during run-time. implementation and not during run-time.
5.1. Mapping of the LAST-UPDATED clause 5.1. Mapping of the LAST-UPDATED clause
The LAST-UPDATED clause, which must be present, contains the date and The LAST-UPDATED clause, which must be present, contains the date and
time that this information module was last edited. time that this information module was last edited. The date and time +
are represented in UTC Time format (see Appendix B). +
5.2. Mapping of the ORGANIZATION clause 5.2. Mapping of the ORGANIZATION clause
The ORGANIZATION clause, which must be present, contains a textual The ORGANIZATION clause, which must be present, contains a textual
description of the organization under whose auspices this information description of the organization under whose auspices this information
module was developed. module was developed.
5.3. Mapping of the CONTACT-INFO clause 5.3. Mapping of the CONTACT-INFO clause
The CONTACT-INFO clause, which must be present, contains the name, The CONTACT-INFO clause, which must be present, contains the name,
skipping to change at page 17, line 41 skipping to change at page 18, line 42
5.4. Mapping of the DESCRIPTION clause 5.4. Mapping of the DESCRIPTION clause
The DESCRIPTION clause, which must be present, contains a high-level The DESCRIPTION clause, which must be present, contains a high-level
textual description of the contents of this information module. textual description of the contents of this information module.
5.5. Mapping of the REVISION clause 5.5. Mapping of the REVISION clause
The REVISION clause, which need not be present, is repeatedly used to The REVISION clause, which need not be present, is repeatedly used to
describe the revisions made to this information module, in reverse describe the revisions made to this information module, in reverse
chronological order. Each instance of this clause contains the date and chronological order. Each instance of this clause contains the date and
time of the revision. time of the revision. The date and time are represented in UTC Time +
format (see Appendix B). +
5.6. Mapping of the DESCRIPTION clause 5.6. Mapping of the DESCRIPTION clause
The DESCRIPTION clause, which must be present for each REVISION clause, The DESCRIPTION clause, which must be present for each REVISION clause,
contains a high-level textual description of the revision identified in contains a high-level textual description of the revision identified in
that REVISION clause. that REVISION clause.
5.7. Mapping of the MODULE-IDENTITY value 5.7. Mapping of the MODULE-IDENTITY value
The value of an invocation of the MODULE-IDENTITY macro is an OBJECT The value of an invocation of the MODULE-IDENTITY macro is an OBJECT
skipping to change at page 20, line 7 skipping to change at page 21, line 7
REVISION "9210070433Z" REVISION "9210070433Z"
DESCRIPTION DESCRIPTION
"Initial version of this MIB module." "Initial version of this MIB module."
-- contact IANA for actual number -- contact IANA for actual number
::= { experimental xx } ::= { experimental xx }
END END
6. Mapping of the OBJECT-IDENTITY macro 6. Mapping of the OBJECT-IDENTITY macro
The OBJECT-IDENTITY macro is used to define information about an OBJECT The OBJECT-IDENTITY macro is used to define information about an OBJECT |
IDENTIFIER assignment. It should be noted that the expansion of the IDENTIFIER assignment. All administrative OBJECT IDENTIFIER assignments |
OBJECT-IDENTITY macro is something which conceptually happens during which define a type identification value (see AutonomousType, a textual |
implementation and not during run-time. 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 6.1. Mapping of the STATUS clause
The STATUS clause, which must be present, indicates whether this The STATUS clause, which must be present, indicates whether this
definition is current or historic. definition is current or historic.
The values "current", and "obsolete" are self-explanatory. The values "current", and "obsolete" are self-explanatory. The +
"deprecated" value indicates that the definition is obsolete, but that +
an implementor may wish to support it to foster interoperability with +
older implementations. +
6.2. Mapping of the DESCRIPTION clause 6.2. Mapping of the DESCRIPTION clause
The DESCRIPTION clause, which must be present, contains a textual The DESCRIPTION clause, which must be present, contains a textual
description of the object assignment. description of the object assignment.
6.3. Mapping of the REFERENCE clause 6.3. Mapping of the REFERENCE clause
The REFERENCE clause, which need not be present, contains a textual The REFERENCE clause, which need not be present, contains a textual
cross-reference to an object assignment defined in some other cross-reference to an object assignment defined in some other
skipping to change at page 22, line 15 skipping to change at page 23, line 15
7. Mapping of the OBJECT-TYPE macro 7. Mapping of the OBJECT-TYPE macro
The OBJECT-TYPE macro is used to define a managed object. It should be The OBJECT-TYPE macro is used to define a managed object. It should be
noted that the expansion of the OBJECT-TYPE macro is something which noted that the expansion of the OBJECT-TYPE macro is something which
conceptually happens during implementation and not during run-time. conceptually happens during implementation and not during run-time.
7.1. Mapping of the SYNTAX clause 7.1. Mapping of the SYNTAX clause
The SYNTAX clause, which must be present, defines the abstract data The SYNTAX clause, which must be present, defines the abstract data
structure corresponding to that object. The data structure must be one structure corresponding to that object. The data structure must be one
of the alternatives defined in the ObjectSyntax CHOICE. of the alternatives defined in the ObjectSyntax CHOICE or the BITS |
construct. |
Full ASN.1 sub-typing is allowed, as appropriate to the underingly ASN.1 A extended subset of the full capabilities of ASN.1 sub-typing is |
type, except as otherwise noted in this memo, primarily as an aid to allowed, as appropriate to the underingly ASN.1 type. |
implementors in understanding the meaning of the object. Any such Any such restriction on size, range, enumerations or repertoire
restriction on size, range, enumerations or repertoire specified in this specified in this clause represents the maximal level of support which
clause represents the maximal level of support which makes "protocol makes "protocol sense". Restrictions on sub-typing are specified in
sense". Restrictions on sub-typing are specified in detail in Section 9 detail in Section 9 and Appendix C of this memo. |
of this memo.
The semantics of ObjectSyntax are now described. The semantics of ObjectSyntax are now described.
7.1.1. Integer32 and INTEGER 7.1.1. Integer32 and INTEGER
The Integer32 type represents integer-valued information between -2^31 The Integer32 type represents integer-valued information between -2^31
and 2^31-1 inclusive (-2147483648 to 2147483647 decimal). This type is and 2^31-1 inclusive (-2147483648 to 2147483647 decimal). This type is
indistinguishable from the INTEGER type. 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 may also be used to represent integer-valued The INTEGER type may also be used to represent integer-valued |
information, if it contains named-number enumerations, or if it is sub- information as named-number enumerations. In this case, |
typed to be more constrained than the Integer32 type. In the former only those named-numbers so enumerated may be present as a value. Note
case, only those named-numbers so enumerated may be present as a value. that although it is recommended that enumerated values start at 1 and be
Note that although it is recommended that enumerated values start at 1 numbered contiguously, any valid value for Integer32 is allowed for an
and be numbered contiguously, any valid value for Integer32 is allowed enumerated value and, further, enumerated values needn't be contiguously
for an enumerated value and, further, enumerated values needn't be assigned.
contiguously assigned.
Finally, a label for a named-number enumeration must consist of one or Finally, a label for a named-number enumeration must consist of one or
more letters or digits (no hyphens), up to a maximum of 64 characters, more letters or digits (no hyphens), up to a maximum of 64 characters,
and the initial character must be a lower-case letter. and the initial character must be a lower-case letter.
7.1.2. OCTET STRING 7.1.2. OCTET STRING
The OCTET STRING type represents arbitrary binary or textual data. The OCTET STRING type represents arbitrary binary or textual data.
Although there is no SMI-specified size limitation for this type, MIB Although there is no SMI-specified size limitation for this type, MIB
designers should realize that there may be implementation and designers should realize that there may be implementation and
interoperability limitations for sizes in excess of 255 octets. interoperability limitations for sizes in excess of 255 octets.
7.1.3. OBJECT IDENTIFIER 7.1.3. OBJECT IDENTIFIER
The OBJECT IDENTIFIER type represents administratively assigned names. The OBJECT IDENTIFIER type represents administratively assigned names.
Any instance of this type may have at most 128 sub-identifiers. Any instance of this type may have at most 128 sub-identifiers.
Further, each sub-identifier must not exceed the value 2^32-1 Further, each sub-identifier must not exceed the value 2^32-1
(4294967295 decimal). (4294967295 decimal).
7.1.4. BIT STRING 7.1.4. The BITS construct
The BIT STRING type represents an enumeration of named bits. This The BITS construct represents an enumeration of named bits. |
collection is assigned non-negative, contiguous values, starting at This collection is assigned non-negative, contiguous values, starting at
zero. Only those named-bits so enumerated may be present in a value. zero. Only those named-bits so enumerated may be present in a value.
(Thus, enumerations must be assigned to consecutive bits). (Thus, enumerations must be assigned to consecutive bits).
A requirement on "standard" MIB modules is that the hyphen character is Although there is no SMI-specified limitation on the number of -
not allowed as a part of the label name for any named-bit enumeration.
Although there is no SMI-specified limitation on the number of
enumerations (and therefore on the length of a value), MIB designers enumerations (and therefore on the length of a value), MIB designers
should realize that there may be implementation and interoperability should realize that there may be implementation and interoperability |
limitations for sizes in excess of TBD bits. limitations for sizes in excess of 128 bits. |
Finally, a label for a named-number enumeration must consist of one or Finally, a label for a named-number enumeration must consist of one or
more letters or digits (no hyphens), up to a maximum of 64 characters, more letters or digits (no hyphens), up to a maximum of 64 characters,
and the initial character must be a lower-case letter. and the initial character must be a lower-case letter.
7.1.5. IpAddress 7.1.5. IpAddress
The IpAddress type represents a 32-bit internet address. It is The IpAddress type represents a 32-bit internet address. It is
represented as an OCTET STRING of length 4, in network byte-order. represented as an OCTET STRING of length 4, in network byte-order.
skipping to change at page 24, line 21 skipping to change at page 25, line 21
Counters have no defined "initial" value, and thus, a single value of a Counters have no defined "initial" value, and thus, a single value of a
Counter has (in general) no information content. Discontinuities in the Counter has (in general) no information content. Discontinuities in the
monotonically increasing value normally occur at re-initialization of monotonically increasing value normally occur at re-initialization of
the management system, and at other times as specified in the the management system, and at other times as specified in the
description of an object-type using this ASN.1 type. If such other 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 can occur, for example, the creation of an object instance at
times other than re-initialization, then a corresponding object should times other than re-initialization, then a corresponding object should
be defined with a SYNTAX clause value of TimeStamp (a textual convention be defined with a SYNTAX clause value of TimeStamp (a textual convention
defined in [3]) indicating the time of the last discontinuity. defined in [3]) indicating the time of the last discontinuity.
The value of the MAX-ACCESS clause for objects with a SYNTAX clause The value of the MAX-ACCESS clause for objects with a SYNTAX clause |
value of Counter32 is always "read-only". 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 A DEFVAL clause is not allowed for objects with a SYNTAX clause value of
Counter32. Counter32.
7.1.7. Gauge32 7.1.7. Gauge32
The Gauge32 type represents a non-negative integer, which may increase The Gauge32 type represents a non-negative integer, which may increase
or decrease, but shall never exceed a maximum value. The maximum value or decrease, but shall never exceed a maximum value. The maximum value
can not be greater than 2^32-1 (4294967295 decimal). The value of a can not be greater than 2^32-1 (4294967295 decimal). The value of a
Gauge has its maximum value whenever the information being modeled is Gauge has its maximum value whenever the information being modeled is
skipping to change at page 26, line 15 skipping to change at page 27, line 15
Counters have no defined "initial" value, and thus, a single value of a Counters have no defined "initial" value, and thus, a single value of a
Counter has (in general) no information content. Discontinuities in the Counter has (in general) no information content. Discontinuities in the
monotonically increasing value normally occur at re-initialization of monotonically increasing value normally occur at re-initialization of
the management system, and at other times as specified in the the management system, and at other times as specified in the
description of an object-type using this ASN.1 type. If such other 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 can occur, for example, the creation of an object instance at
times other than re-initialization, then a corresponding object should times other than re-initialization, then a corresponding object should
be defined with a SYNTAX clause value of TimeStamp (a textual convention be defined with a SYNTAX clause value of TimeStamp (a textual convention
defined in [3]) indicating the time of the last discontinuity. defined in [3]) indicating the time of the last discontinuity.
The value of the MAX-ACCESS clause for objects with a SYNTAX clause The value of the MAX-ACCESS clause for objects with a SYNTAX clause |
value of Counter64 is always "read-only". value of Counter64 is either "read-only" or "accessible-for-notify". |
A requirement on "standard" MIB modules is that the Counter64 type may 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 be used only if the information being modeled would wrap in less than
one hour if the Counter32 type was used instead. one hour if the Counter32 type was used instead.
A DEFVAL clause is not allowed for objects with a SYNTAX clause value of A DEFVAL clause is not allowed for objects with a SYNTAX clause value of
Counter64. Counter64.
7.1.12. UInteger32 7.1.12. Unsigned32
The UInteger32 type represents integer-valued information between 0 and The Unsigned32 type represents integer-valued information |
2^32-1 inclusive (0 to 4294967295 decimal). between 0 and 2^32-1 inclusive (0 to 4294967295 decimal).
7.2. Mapping of the UNITS clause 7.2. Mapping of the UNITS clause
This UNITS clause, which need not be present, contains a textual This UNITS clause, which need not be present, contains a textual
definition of the units associated with that object. definition of the units associated with that object.
7.3. Mapping of the MAX-ACCESS clause 7.3. Mapping of the MAX-ACCESS clause
The MAX-ACCESS clause, which must be present, defines whether it makes 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. "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 This is the maximal level of access for the object. (This maximal level
of access is independent of any administrative authorization policy.) of access is independent of any administrative authorization policy.)
The value "read-write" indicates that read and write access make The value "read-write" indicates that read and write access make
"protocol sense", but create does not. The value "read-create" "protocol sense", but create does not. The value "read-create"
indicates that read, write and create access make "protocol sense". The indicates that read, write and create access make "protocol sense". The |
value "not-accessible" indicates either an auxiliary object (see Section value "not-accessible" indicates an auxiliary object (see Section 7.7). |
7.7) or an object which is accessible only via a notification (e.g.,
snmpTrapOID [5]). 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", These values are ordered, from least to greatest: "not-accessible", +
"accessible-for-notify", +
"read-only", "read-write", "read-create". "read-only", "read-write", "read-create".
If any columnar object in a conceptual row has "read-create" as its 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 maximal level of access, then no other columnar object of the same
conceptual row may have a maximal access of "read-write". (Note that conceptual row may have a maximal access of "read-write". (Note that
"read-create" is a superset of "read-write".) "read-create" is a superset of "read-write".)
7.4. Mapping of the STATUS clause 7.4. Mapping of the STATUS clause
The STATUS clause, which must be present, indicates whether this The STATUS clause, which must be present, indicates whether this
skipping to change at page 29, line 35 skipping to change at page 30, line 40
identifiers in the value (the first sub-identifier is `n' itself, identifiers in the value (the first sub-identifier is `n' itself,
following this, each sub-identifier in the value is copied); following this, each sub-identifier in the value is copied);
(6) IpAddress-valued: 4 sub-identifiers, in the familiar a.b.c.d (6) IpAddress-valued: 4 sub-identifiers, in the familiar a.b.c.d
notation. notation.
(7) NsapAddress-valued: `n' sub-identifiers, where `n' is the length of (7) NsapAddress-valued: `n' sub-identifiers, where `n' is the length of
the value (each octet of the value is encoded in a separate sub- the value (each octet of the value is encoded in a separate sub-
identifier); identifier);
Note that the IMPLIED keyword can only be present for objects having a Note that the IMPLIED keyword can only be present for an object having a |
variable-length syntax (e.g., variable-length strings or object variable-length syntax (e.g., variable-length strings or object |
identifier-valued objects). Further, the IMPLIED keyword may appear at identifier-valued objects), |
most once within the INDEX clause, and if so, is associated with the Further, the IMPLIED keyword can only be associated with the last object |
right-most object having a variable-length syntax. Finally, the IMPLIED in the INDEX clause. |
keyword may not be used on a variable-length string object if that Finally, the IMPLIED keyword may not be used on a variable-length string
string might have a value of zero-length. object if that string might have a value of zero-length.
Instances identified by use of integer-valued objects should be numbered 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 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 an integer-valued index object should be avoided, except in special
cases. cases.
Objects which are both specified in the INDEX clause of a conceptual row Objects which are both specified in the INDEX clause of a conceptual row
and also columnar objects of the same conceptual row are termed and also columnar objects of the same conceptual row are termed
auxiliary objects. The MAX-ACCESS clause for auxiliary objects is auxiliary objects. The MAX-ACCESS clause for auxiliary objects is
"not-accessible", except in the following circumstances: "not-accessible", except in the following circumstances:
(1) within a MIB module originally written to conform to the SNMPv1 (1) within a MIB module originally written to conform to the SNMPv1
framework, and later converted to conform to the SNMPv2 framework; framework, and later converted to conform to the SNMPv2 framework;
or or
(2) a conceptual row must contain at least one columnar object which is (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 not an auxiliary object. In the event that all of a conceptual
row's columnar objects are also specified in its INDEX clause, then row's columnar objects are also specified in its INDEX clause, then
skipping to change at page 30, line 28 skipping to change at page 31, line 33
Note that objects specified in a conceptual row's INDEX clause need not Note that objects specified in a conceptual row's INDEX clause need not
be columnar objects of that conceptual row. In this situation, the be columnar objects of that conceptual row. In this situation, the
DESCRIPTION clause of the conceptual row must include a textual DESCRIPTION clause of the conceptual row must include a textual
explanation of how the objects which are included in the INDEX clause explanation of how the objects which are included in the INDEX clause
but not columnar objects of that conceptual row, are used in uniquely but not columnar objects of that conceptual row, are used in uniquely
identifying instances of the conceptual row's columnar objects. identifying instances of the conceptual row's columnar objects.
7.7.1. Creation and Deletion of Conceptual Rows 7.7.1. Creation and Deletion of Conceptual Rows
For newly-defined conceptual rows which allow the creation of new object For newly-defined conceptual rows which allow the creation of new object
instances and the deletion of existing object instances, there should be instances and/or the deletion of existing object instances, |
one columnar object with a SYNTAX clause value of RowStatus (a textual there should be one columnar object with a SYNTAX clause value of
convention defined in [3]) and a MAX-ACCESS clause value of read-create. RowStatus (a textual convention defined in [3]) and a MAX-ACCESS clause
By convention, this is termed the status column for the conceptual row. value of read-create. By convention, this is termed the status column
for the conceptual row.
7.8. Mapping of the AUGMENTS clause 7.8. Mapping of the AUGMENTS clause
The AUGMENTS clause, which must not be present unless the object The AUGMENTS clause, which must not be present unless the object
corresponds to a conceptual row, is an alternative to the INDEX clause. corresponds to a conceptual row, is an alternative to the INDEX clause.
Every object corresponding to a conceptual row has either an INDEX Every object corresponding to a conceptual row has either an INDEX
clause or an AUGMENTS clause. clause or an AUGMENTS clause.
If an object corresponding to a conceptual row has an INDEX clause, that 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 row is termed a base conceptual row; alternatively, if the object has an
skipping to change at page 30, line 42 skipping to change at page 32, line 4
7.8. Mapping of the AUGMENTS clause 7.8. Mapping of the AUGMENTS clause
The AUGMENTS clause, which must not be present unless the object The AUGMENTS clause, which must not be present unless the object
corresponds to a conceptual row, is an alternative to the INDEX clause. corresponds to a conceptual row, is an alternative to the INDEX clause.
Every object corresponding to a conceptual row has either an INDEX Every object corresponding to a conceptual row has either an INDEX
clause or an AUGMENTS clause. clause or an AUGMENTS clause.
If an object corresponding to a conceptual row has an INDEX clause, that 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 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, AUGMENTS clause, the row is said to be a conceptual row augmentation,
where the AUGMENTS clause names the object corresponding to the base where the AUGMENTS clause names the object corresponding to the base
conceptual row which is augmented by this conceptual row augmentation. 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 Instances of subordinate columnar objects of a conceptual row
augmentation are identified according to the INDEX clause of the base augmentation are identified according to the INDEX clause of the base
conceptual row corresponding to the object named in the AUGMENTS clause. conceptual row corresponding to the object named in the AUGMENTS clause.
Further, instances of subordinate columnar objects of a conceptual row Further, instances of subordinate columnar objects of a conceptual row
augmentation exist according to the same semantics as instances of augmentation exist according to the same semantics as instances of
subordinate columnar objects of the base conceptual row being augmented. subordinate columnar objects of the base conceptual row being augmented.
As such, note that creation of a base conceptual row implies the As such, note that creation of a base conceptual row implies the
correspondent creation of any conceptual row augmentations. correspondent creation of any conceptual row augmentations.
For example, a MIB designer might wish to define additional columns in For example, a MIB designer might wish to define additional columns in
an "enterprise-specific" MIB which logically extend a conceptual row in an "enterprise-specific" MIB which logically extend a conceptual row in
a "standard" MIB. The "standard" MIB definition of the conceptual row a "standard" MIB. The "standard" MIB definition of the conceptual row
would include the INDEX clause and the "enterprise-specific" MIB would would include the INDEX clause and the "enterprise-specific" MIB would
skipping to change at page 32, line 33 skipping to change at page 33, line 35
instance of a read-only object, then the error `notWritable' [6] will be 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 returned. As such, the DEFVAL clause can be used to provide an
acceptable default value that a SNMPv2 entity acting in an agent role acceptable default value that a SNMPv2 entity acting in an agent role
might use. might use.
By way of example, consider the following possible DEFVAL clauses: By way of example, consider the following possible DEFVAL clauses:
ObjectSyntax DEFVAL clause ObjectSyntax DEFVAL clause
----------------- ------------ ----------------- ------------
Integer32 1 Integer32 1
-- same for Gauge32, TimeTicks, UInteger32 -- same for Gauge32, TimeTicks, Unsigned32 |
INTEGER valid -- enumerated value INTEGER valid -- enumerated value
OCTET STRING 'ffffffffffff'H OCTET STRING 'ffffffffffff'H
OBJECT IDENTIFIER sysDescr OBJECT IDENTIFIER sysDescr
BIT STRING { primary, secondary } -- enumerated values BITS { primary, secondary } -- enumerated values |
IpAddress 'c0210415'H -- 192.33.4.21 IpAddress 'c0210415'H -- 192.33.4.21
Object types with SYNTAX of Counter32 and Counter64 may not have DEFVAL Object types with SYNTAX of Counter32 and Counter64 may not have DEFVAL
clauses, since they do not have defined initial values. However, it is clauses, since they do not have defined initial values. However, it is
recommended that they be initialized to zero. recommended that they be initialized to zero.
7.10. Mapping of the OBJECT-TYPE value 7.10. Mapping of the OBJECT-TYPE value
The value of an invocation of the OBJECT-TYPE macro is the name of the The value of an invocation of the OBJECT-TYPE macro is the name of the
object, which is an OBJECT IDENTIFIER, an administratively assigned object, which is an OBJECT IDENTIFIER, an administratively assigned
skipping to change at page 34, line 7 skipping to change at page 35, line 7
Note that the final sub-identifier of any administratively assigned name Note that the final sub-identifier of any administratively assigned name
for an object shall be positive. A zero-valued final sub-identifier is for an object shall be positive. A zero-valued final sub-identifier is
reserved for future use. reserved for future use.
Further note that although conceptual tables and rows are given Further note that although conceptual tables and rows are given
administratively assigned names, these conceptual objects may not be administratively assigned names, these conceptual objects may not be
manipulated in aggregate form by the management protocol. manipulated in aggregate form by the management protocol.
7.11. Usage Example 7.11. Usage Example
Consider how one might define a conceptual table and its subordinates. Consider how one might define a conceptual table and its subordinates. +
(This example uses the RowStatus textual convention defined in [3].) +
evalSlot OBJECT-TYPE evalSlot OBJECT-TYPE
SYNTAX INTEGER SYNTAX INTEGER
MAX-ACCESS read-only MAX-ACCESS read-only
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The index number of the first unassigned entry in the "The index number of the first unassigned entry in the
evaluation table. evaluation table.
A management station should create new entries in the A management station should create new entries in the
evaluation table using this algorithm: first, issue a evaluation table using this algorithm: first, issue a
management protocol retrieval operation to determine the management protocol retrieval operation to determine the
value of evalSlot; and, second, issue a management protocol value of evalSlot; and, second, issue a management protocol
set operation to create an instance of the evalStatus object set operation to create an instance of the evalStatus object |
setting its value to underCreation(1). If this latter setting its value to createAndGo(4) or createAndWait(5). |
operation succeeds, then the management station may continue If this latter operation succeeds, then the management
modifying the instances corresponding to the newly created station may continue modifying the instances corresponding
conceptual row, without fear of collision with other to the newly created conceptual row, without fear of
management stations." collision with other management stations."
::= { eval 1 } ::= { eval 1 }
evalTable OBJECT-TYPE evalTable OBJECT-TYPE
SYNTAX SEQUENCE OF EvalEntry SYNTAX SEQUENCE OF EvalEntry
MAX-ACCESS not-accessible MAX-ACCESS not-accessible
STATUS current STATUS current
DESCRIPTION DESCRIPTION
"The (conceptual) evaluation table." "The (conceptual) evaluation table."
::= { eval 2 } ::= { eval 2 }
skipping to change at page 37, line 9 skipping to change at page 38, line 9
The REFERENCE clause, which need not be present, contains a textual The REFERENCE clause, which need not be present, contains a textual
cross-reference to a notification defined in some other information cross-reference to a notification defined in some other information
module. This is useful when de-osifying a MIB module produced by some module. This is useful when de-osifying a MIB module produced by some
other organization. other organization.
8.5. Mapping of the NOTIFICATION-TYPE value 8.5. Mapping of the NOTIFICATION-TYPE value
The value of an invocation of the NOTIFICATION-TYPE macro is the name of The value of an invocation of the NOTIFICATION-TYPE macro is the name of
the notification, which is an OBJECT IDENTIFIER, an administratively the notification, which is an OBJECT IDENTIFIER, an administratively
assigned name. assigned name. In order to achieve compatibility with the procedures +
employed by proxy agents (see Section 3.1.2 of [8]), 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 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, is used to generate a SNMPv2-Trap-PDU or InformRequest-PDU,
respectively. respectively.
8.6. Usage Example 8.6. Usage Example
Consider how a linkUp trap might be described: Consider how a linkUp trap might be described:
linkUp NOTIFICATION-TYPE linkUp NOTIFICATION-TYPE
skipping to change at page 38, line 25 skipping to change at page 39, line 25
links represented in its configuration has come up." links represented in its configuration has come up."
::= { snmpTraps 4 } ::= { snmpTraps 4 }
According to this invocation, the trap authoritatively identified as According to this invocation, the trap authoritatively identified as
{ snmpTraps 4 } { snmpTraps 4 }
is used to report a link coming up. is used to report a link coming up.
Note that a SNMPv2 entity acting in an agent role can be configured to Note that a SNMPv2 entity acting in an agent role can be configured to
send this trap to zero or more SNMPv2 entities acting in a manager role, send this trap to zero or more SNMPv2 entities acting in a manager role, |
depending on the contents of the aclTable and viewTable [7] tables. For depending on the contents of the acTable and viewTable [7] tables. |
example, by judicious use of the viewTable, a SNMPv2 entity acting in an For example, by judicious use of the viewTable, a SNMPv2 entity acting
agent role might be configured to send all linkUp traps to one in an agent role might be configured to send all linkUp traps to one
particular SNMPv2 entity, and linkUp traps for only certain interfaces particular SNMPv2 entity, and linkUp traps for only certain interfaces
to other SNMPv2 entities. to other SNMPv2 entities.
9. Refined Syntax 9. Refined Syntax
Some macros have clauses which allows syntax to be refined, Some macros have clauses which allows syntax to be refined,
specifically: the SYNTAX clause of the OBJECT-TYPE macro, and the specifically: the SYNTAX clause of the OBJECT-TYPE macro, and the
SYNTAX/WRITE-SYNTAX clauses of the MODULE-COMPLIANCE and AGENT- SYNTAX/WRITE-SYNTAX clauses of the MODULE-COMPLIANCE and AGENT-
CAPABILITIES macros [2]. However, not all refinements of syntax are CAPABILITIES macros [2]. However, not all refinements of syntax are
appropriate. In particular, the object's primitive or application type appropriate. In particular, the object's primitive or application type
must not be changed. must not be changed.
Further, the following restrictions apply: Further, the following restrictions apply:
Restrictions to Refinement on Restrictions to Refinement on
object syntax range enumeration size repertoire object syntax range enumeration size repertoire
----------------- ----- ----------- ---- ---------- ----------------- ----- ----------- ---- ----------
INTEGER (1) (2) - - INTEGER (1) (2) - -
Integer32 - - - - Integer32 (1) - - - |
UInteger32 - - - - Unsigned32 (1) - - - |
OCTET STRING - - (3) (4) OCTET STRING - - (3) (4)
OBJECT IDENTIFIER - - - - OBJECT IDENTIFIER - - - -
BIT STRING - (2) - - BITS - (2) - - |
IpAddress - - - - IpAddress - - - -
Counter32 - - - - Counter32 - - - -
Counter64 - - - - Counter64 - - - -
Gauge32 (1) - - - Gauge32 (1) - - -
TimeTicks - - - - TimeTicks - - - -
NsapAddress - - - - NsapAddress - - - -
where: where:
(1) the range of permitted values may be refined by raising the lower- (1) the range of permitted values may be refined by raising the lower-
skipping to change at page 39, line 48 skipping to change at page 40, line 48
(2) the enumeration of named-values may be refined by removing one or (2) the enumeration of named-values may be refined by removing one or
more named-values; more named-values;
(3) the size in characters of the value may be refined by raising the (3) the size in characters of the value may be refined by raising the
lower-bounds, by reducing the upper-bounds, and/or by reducing the lower-bounds, by reducing the upper-bounds, and/or by reducing the
alternative size choices; or, alternative size choices; or,
(4) the repertoire of characters in the value may be reduced by further (4) the repertoire of characters in the value may be reduced by further
sub-typing. sub-typing.
Otherwise no refinements are possible. Otherwise no refinements are possible. Further details on sub-typing |
are provided in Appendix C. |
Note that when refining an object with a SYNTAX clause value of
Integer32 or UInteger32, the refined SYNTAX is expressed as an INTEGER
and the restrictions of the table above are used.
10. Extending an Information Module 10. Extending an Information Module
As experience is gained with a published information module, it may be As experience is gained with a published information module, it may be
desirable to revise that information module. desirable to revise that information module.
To begin, the invocation of the MODULE-IDENTITY macro should be updated To begin, the invocation of the MODULE-IDENTITY macro should be updated
to include information about the revision. Usually, this consists of to include information about the revision. Usually, this consists of
updating the LAST-UPDATED clause and adding a pair of REVISION and updating the LAST-UPDATED clause and adding a pair of REVISION and
DESCRIPTION clauses. However, other existing clauses in the invocation DESCRIPTION clauses. However, other existing clauses in the invocation
skipping to change at page 43, line 5 skipping to change at page 43, line 5
associated with that notification must also be changed. associated with that notification must also be changed.
Note that changing the descriptor associated with an existing Note that changing the descriptor associated with an existing
notification is considered a semantic change, as these strings may be notification is considered a semantic change, as these strings may be
used in an IMPORTS statement. used in an IMPORTS statement.
Finally, note that if an object has the value of its STATUS clause Finally, note that if an object has the value of its STATUS clause
changed, then the value of its DESCRIPTION clause should be updated changed, then the value of its DESCRIPTION clause should be updated
accordingly. accordingly.
11. Appendix: de-OSIfying a MIB module 11. Appendix A: de-OSIfying a MIB module
There has been an increasing amount of work recently on taking MIBs There has been an increasing amount of work recently on taking MIBs
defined by other organizations (e.g., the IEEE) and de-osifying them for defined by other organizations (e.g., the IEEE) and de-osifying them for
use with the Internet-standard network management framework. The steps use with the Internet-standard network management framework. The steps
to achieve this are straight-forward, though tedious. Of course, it is to achieve this are straight-forward, though tedious. Of course, it is
helpful to already be experienced in writing MIB modules for use with helpful to already be experienced in writing MIB modules for use with
the Internet-standard network management framework. the Internet-standard network management framework.
The first step is to construct a skeletal MIB module, as shown earlier The first step is to construct a skeletal MIB module, as shown earlier
in Section 5.8. The next step is to categorize the objects into groups. in Section 5.8. The next step is to categorize the objects into groups.
skipping to change at page 44, line 21 skipping to change at page 44, line 21
On the other hand, the definition of conceptual rows where the number of On the other hand, the definition of conceptual rows where the number of
columnar objects used as indexes outnumbers the number used to hold columnar objects used as indexes outnumbers the number used to hold
information, should also be avoided. In particular, the splitting of a information, should also be avoided. In particular, the splitting of a
managed object class's attributes into many conceptual tables should not managed object class's attributes into many conceptual tables should not
be used as a way to obtain the same degree of flexibility/complexity as be used as a way to obtain the same degree of flexibility/complexity as
is often found in MIBs with a myriad of optionals. is often found in MIBs with a myriad of optionals.
11.1.1. Mapping to the SYNTAX clause 11.1.1. Mapping to the SYNTAX clause
When mapping to the SYNTAX clause of the OBJECT-type macro: When mapping to the SYNTAX clause of the OBJECT-TYPE macro: |
(1) An object with BOOLEAN syntax becomes a TruthValue [3]. (1) An object with BOOLEAN syntax becomes a TruthValue [3].
(2) An object with INTEGER syntax becomes an Integer32. (2) An object with INTEGER syntax becomes an Integer32.
(3) An object with ENUMERATED syntax becomes an INTEGER with (3) An object with ENUMERATED syntax becomes an INTEGER with
enumerations, taking any of the values given which can be enumerations, taking any of the values given which can be
represented with an Integer32. represented with an Integer32.
(4) An object with BIT STRING syntax but no enumerations becomes an (4) An object with BIT STRING syntax having enumerations becomes a BITS +
construct. +
(5) +
An object with BIT STRING syntax but no enumerations becomes an
OCTET STRING. OCTET STRING.
(5) An object with a character string syntax becomes either an OCTET (6) An object with a character string syntax becomes either an OCTET
STRING, or a DisplayString [3], depending on the repertoire of the STRING, or a DisplayString [3], depending on the repertoire of the
character string. character string.
(6) A non-tabular object with a complex syntax, such as REAL or (7) A non-tabular object with a complex syntax, such as REAL or
EXTERNAL, must be decomposed, usually into an OCTET STRING (if EXTERNAL, must be decomposed, usually into an OCTET STRING (if
sensible). As a rule, any object with a complicated syntax should sensible). As a rule, any object with a complicated syntax should
be avoided. be avoided.
(7) Tabular objects must be decomposed into rows of columnar objects. (8) Tabular objects must be decomposed into rows of columnar objects.
11.1.2. Mapping to the UNITS clause 11.1.2. Mapping to the UNITS clause
If the description of this managed object defines a unit-basis, then If the description of this managed object defines a unit-basis, then
mapping to this clause is straight-forward. mapping to this clause is straight-forward.
11.1.3. Mapping to the MAX-ACCESS clause 11.1.3. Mapping to the MAX-ACCESS clause
This is straight-forward. This is straight-forward.
skipping to change at page 48, line 5 skipping to change at page 48, line 5
This is straight-forward: simply copy the text, making sure that any This is straight-forward: simply copy the text, making sure that any
embedded double quotation marks are sanitized (i.e., replaced with embedded double quotation marks are sanitized (i.e., replaced with
single-quotes or removed). single-quotes or removed).
11.3.3. Mapping to the REFERENCE clause 11.3.3. Mapping to the REFERENCE clause
This is straight-forward: simply include a textual reference to the This is straight-forward: simply include a textual reference to the
notification being mapped, the document which defines the notification, notification being mapped, the document which defines the notification,
and perhaps a page number in the document. and perhaps a page number in the document.
12. Acknowledgements 12. Appendix B: UTC Time Format
This document is a modified version of RFC 1442. Several clauses defined in this document use the UTC Time format: |
13. References YYMMDDHHMMZ |
where: YY - last two digits of year |
MM - month (01 through 12) |
DD - day of month (01 through 31) |
HH - hours (00 through 23) |
MM - minutes (00 through 59) |
Z - the character "Z" denotes Greenwich Mean Time (GMT). |
For example, "9502192015Z" represents 8:15pm GMT on 19 February 1995. |
13. Appendix C: Detailed Sub-typing Rules
13.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 (i.e. 'xxxx'H) +
<binString> is a binary string (i.e. 'xxxx'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. +
13.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)) +
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 +
13.3. Rules for Textual Conventions +
Sub-typing of Textual Conventions (see [3]) is allowed but must be +
valid. In particular, each range specified for the textual convention +
must be a subset of a range specified for the base type. For example, +
Tc1 ::= INTEGER (1..10 | 11..20) +
Tc2 ::= Tc1 (2..10 | 12..15) -- is valid +
Tc3 ::= Tc1 (8..12) -- is invalid +
14. Acknowledgements +
The authors wish to acknowledge the contributions of the SNMPv2 Working +
Group in general. In particular, the following individuals +
Dave Arneson (Cabletron), +
Uri Blumenthal (IBM), +
Doug Book (Chipcom), +
Maria Greene (Ascom Timeplex), +
Deirdre Kostik (Bellcore), +
Dave Harrington (Cabletron), +
Jeff Johnson (Cisco Systems), +
Brian O'Keefe (Hewlett Packard), +
Dave Perkins (Bay Networks), +
Randy Presuhn (Peer Networks), +
Shawn Routhier (Epilogue), +
Bob Stewart (Cisco Systems), +
Kaj Tesink (Bellcore). +
deserve special thanks for their contributions. +
15. References
[1] Information processing systems - Open Systems Interconnection - [1] Information processing systems - Open Systems Interconnection -
Specification of Abstract Syntax Notation One (ASN.1), Specification of Abstract Syntax Notation One (ASN.1),
International Organization for Standardization. International International Organization for Standardization. International
Standard 8824, (December, 1987). Standard 8824, (December, 1987).
[2] Case, J., McCloghrie, K., Rose, M., and Waldbusser, S., [2] Case, J., McCloghrie, K., Rose, M., and Waldbusser, S.,
"Conformance Statements for Version 2 of the the Simple Network "Conformance Statements for Version 2 of the the Simple Network
Management Protocol (SNMPv2)", Internet Draft, SNMP Research, Inc., Management Protocol (SNMPv2)", Internet Draft, SNMP Research, Inc.,
Cisco Systems, Dover Beach Consulting, Inc., Carnegie Mellon Cisco Systems, Dover Beach Consulting, Inc., Carnegie Mellon
skipping to change at page 48, line 45 skipping to change at page 52, line 17
Protocol (SNMPv2)", Internet Draft, SNMP Research, Inc., Cisco Protocol (SNMPv2)", Internet Draft, SNMP Research, Inc., Cisco
Systems, Dover Beach Consulting, Inc., Carnegie Mellon University, Systems, Dover Beach Consulting, Inc., Carnegie Mellon University,
November 1994. November 1994.
[6] Case, J., McCloghrie, K., Rose, M., and Waldbusser, S., "Protocol [6] Case, J., McCloghrie, K., Rose, M., and Waldbusser, S., "Protocol
Operations for Version 2 of the Simple Network Management Protocol Operations for Version 2 of the Simple Network Management Protocol
(SNMPv2)", Internet Draft, SNMP Research, Inc., Cisco Systems, (SNMPv2)", Internet Draft, SNMP Research, Inc., Cisco Systems,
Dover Beach Consulting, Inc., Carnegie Mellon University, November Dover Beach Consulting, Inc., Carnegie Mellon University, November
1994. 1994.
[7] McCloghrie, K., and Galvin, J., "Party MIB for Version 2 of the [7] Case, J., Galvin, J., McCloghrie, K., Rose, M., and Waldbusser, S., |
Simple Network Management Protocol (SNMPv2)", Internet Draft, Cisco "Party MIB for Version 2 of the Simple Network Management Protocol
Systems, Trusted Information Systems, November 1994. (SNMPv2)", Internet Draft, SNMP Research, Inc., Trusted Information |
Systems, Cisco Systems, Dover Beach Consulting, Inc., Carnegie |
Mellon University, |
November 1994.
14. Security Considerations [8] Case, J., McCloghrie, K., Rose, M., and Waldbusser, S., +
"Coexistence between Version 1 and Version 2 of the Internet- +
standard Network Management Framework", Internet Draft, SNMP +
Research, Inc., Cisco Systems, Dover Beach Consulting, Inc., +
Carnegie Mellon University, November 1994. +
[9] Case, J., McCloghrie, K., Rose, M., and Waldbusser, S., +
"Conformance Statements for Version 2 of the the Simple Network +
Management Protocol (SNMPv2)", Internet Draft, SNMP Research, Inc., +
Cisco Systems, Dover Beach Consulting, Inc., Carnegie Mellon +
University, November 1994. +
16. Security Considerations +
Security issues are not discussed in this memo. Security issues are not discussed in this memo.
15. Authors' Addresses 17. Authors' Addresses
Jeffrey D. Case Jeffrey D. Case
SNMP Research, Inc. SNMP Research, Inc.
3001 Kimberlin Heights Rd. 3001 Kimberlin Heights Rd.
Knoxville, TN 37920-9716 Knoxville, TN 37920-9716
US US
Phone: +1 615 573 1434 Phone: +1 615 573 1434
Email: case@snmp.com Email: case@snmp.com
skipping to change at page 50, line 7 skipping to change at page 54, line 7
Carnegie Mellon University Carnegie Mellon University
5000 Forbes Ave 5000 Forbes Ave
Pittsburgh, PA 15213 Pittsburgh, PA 15213
US US
Phone: +1 412 268 6628 Phone: +1 412 268 6628
Email: waldbusser@cmu.edu Email: waldbusser@cmu.edu
Table of Contents Table of Contents
1 Introduction .................................................... 2 1 Introduction .................................................... 3
1.1 A Note on Terminology ......................................... 2 1.1 A Note on Terminology ......................................... 3
1.2 Change Log .................................................... 3 1.2 Change Log .................................................... 4
2 Definitions ..................................................... 4 2 Definitions ..................................................... 5
3.1 The MODULE-IDENTITY macro ..................................... 5 3.1 The MODULE-IDENTITY macro ..................................... 6
3.2 Object Names and Syntaxes ..................................... 7 3.2 Object Names and Syntaxes ..................................... 8
3.3 The OBJECT-TYPE macro ......................................... 10 3.3 The OBJECT-TYPE macro ......................................... 11
3.5 The NOTIFICATION-TYPE macro ................................... 12 3.5 The NOTIFICATION-TYPE macro ................................... 13
3 Information Modules ............................................. 13 3.6 Administrative Identifiers .................................... 13
3.1 Macro Invocation .............................................. 13 3 Information Modules ............................................. 14
3.1.1 Textual Clauses ............................................. 14 3.1 Macro Invocation .............................................. 14
3.2 IMPORTing Symbols ............................................. 14 3.1.1 Textual Clauses ............................................. 15
4 Naming Hierarchy ................................................ 16 3.2 IMPORTing Symbols ............................................. 15
5 Mapping of the MODULE-IDENTITY macro ............................ 17 4 Naming Hierarchy ................................................ 17
5.1 Mapping of the LAST-UPDATED clause ............................ 17 5 Mapping of the MODULE-IDENTITY macro ............................ 18
5.2 Mapping of the ORGANIZATION clause ............................ 17 5.1 Mapping of the LAST-UPDATED clause ............................ 18
5.3 Mapping of the CONTACT-INFO clause ............................ 17 5.2 Mapping of the ORGANIZATION clause ............................ 18
5.4 Mapping of the DESCRIPTION clause ............................. 17 5.3 Mapping of the CONTACT-INFO clause ............................ 18
5.5 Mapping of the REVISION clause ................................ 17 5.4 Mapping of the DESCRIPTION clause ............................. 18
5.6 Mapping of the DESCRIPTION clause ............................. 18 5.5 Mapping of the REVISION clause ................................ 18
5.7 Mapping of the MODULE-IDENTITY value .......................... 18 5.6 Mapping of the DESCRIPTION clause ............................. 19
5.8 Usage Example ................................................. 19 5.7 Mapping of the MODULE-IDENTITY value .......................... 19
6 Mapping of the OBJECT-IDENTITY macro ............................ 20 5.8 Usage Example ................................................. 20
6.1 Mapping of the STATUS clause .................................. 20 6 Mapping of the OBJECT-IDENTITY macro ............................ 21
6.2 Mapping of the DESCRIPTION clause ............................. 20 6.1 Mapping of the STATUS clause .................................. 21
6.3 Mapping of the REFERENCE clause ............................... 20 6.2 Mapping of the DESCRIPTION clause ............................. 21
6.4 Mapping of the OBJECT-IDENTITY value .......................... 20 6.3 Mapping of the REFERENCE clause ............................... 21
6.5 Usage Example ................................................. 21 6.4 Mapping of the OBJECT-IDENTITY value .......................... 21
7 Mapping of the OBJECT-TYPE macro ................................ 22 6.5 Usage Example ................................................. 22
7.1 Mapping of the SYNTAX clause .................................. 22 7 Mapping of the OBJECT-TYPE macro ................................ 23
7.1.1 Integer32 and INTEGER ....................................... 22 7.1 Mapping of the SYNTAX clause .................................. 23
7.1.2 OCTET STRING ................................................ 23 7.1.1 Integer32 and INTEGER ....................................... 23
7.1.3 OBJECT IDENTIFIER ........................................... 23 7.1.2 OCTET STRING ................................................ 24
7.1.4 BIT STRING .................................................. 23 7.1.3 OBJECT IDENTIFIER ........................................... 24
7.1.5 IpAddress ................................................... 23 7.1.4 The BITS construct .......................................... 24
7.1.6 Counter32 ................................................... 24 7.1.5 IpAddress ................................................... 24
7.1.7 Gauge32 ..................................................... 24 7.1.6 Counter32 ................................................... 25
7.1.8 TimeTicks ................................................... 24 7.1.7 Gauge32 ..................................................... 25
7.1.9 Opaque ...................................................... 25 7.1.8 TimeTicks ................................................... 25
7.1.10 NsapAddress ................................................ 25 7.1.9 Opaque ...................................................... 26
7.1.11 Counter64 .................................................. 25 7.1.10 NsapAddress ................................................ 26
7.1.12 UInteger32 ................................................. 26 7.1.11 Counter64 .................................................. 26
7.2 Mapping of the UNITS clause ................................... 26 7.1.12 Unsigned32 ................................................. 27
7.3 Mapping of the MAX-ACCESS clause .............................. 26 7.2 Mapping of the UNITS clause ................................... 27
7.4 Mapping of the STATUS clause .................................. 27 7.3 Mapping of the MAX-ACCESS clause .............................. 27
7.5 Mapping of the DESCRIPTION clause ............................. 27 7.4 Mapping of the STATUS clause .................................. 28
7.6 Mapping of the REFERENCE clause ............................... 27 7.5 Mapping of the DESCRIPTION clause ............................. 28
7.7 Mapping of the INDEX clause ................................... 27 7.6 Mapping of the REFERENCE clause ............................... 28
7.7.1 Creation and Deletion of Conceptual Rows .................... 30 7.7 Mapping of the INDEX clause ................................... 29
7.8 Mapping of the AUGMENTS clause ................................ 30 7.7.1 Creation and Deletion of Conceptual Rows .................... 31
7.8.1 Relation between INDEX and AUGMENTS clauses ................. 31 7.8 Mapping of the AUGMENTS clause ................................ 31
7.9 Mapping of the DEFVAL clause .................................. 32 7.8.1 Relation between INDEX and AUGMENTS clauses ................. 32
7.10 Mapping of the OBJECT-TYPE value ............................. 32 7.9 Mapping of the DEFVAL clause .................................. 33
7.11 Usage Example ................................................ 34 7.10 Mapping of the OBJECT-TYPE value ............................. 34
8 Mapping of the NOTIFICATION-TYPE macro .......................... 36 7.11 Usage Example ................................................ 35
8.1 Mapping of the OBJECTS clause ................................. 36 8 Mapping of the NOTIFICATION-TYPE macro .......................... 37
8.2 Mapping of the STATUS clause .................................. 36 8.1 Mapping of the OBJECTS clause ................................. 37
8.3 Mapping of the DESCRIPTION clause ............................. 36 8.2 Mapping of the STATUS clause .................................. 37
8.4 Mapping of the REFERENCE clause ............................... 36 8.3 Mapping of the DESCRIPTION clause ............................. 37
8.5 Mapping of the NOTIFICATION-TYPE value ........................ 37 8.4 Mapping of the REFERENCE clause ............................... 37
8.6 Usage Example ................................................. 38 8.5 Mapping of the NOTIFICATION-TYPE value ........................ 38
9 Refined Syntax .................................................. 39 8.6 Usage Example ................................................. 39
9 Refined Syntax .................................................. 40
10 Extending an Information Module ................................ 41 10 Extending an Information Module ................................ 41
10.1 Object Assignments ........................................... 41 10.1 Object Assignments ........................................... 41
10.2 Object Definitions ........................................... 41 10.2 Object Definitions ........................................... 41
10.3 Notification Definitions ..................................... 42 10.3 Notification Definitions ..................................... 42
11 Appendix: de-OSIfying a MIB module ............................. 43 11 Appendix A: de-OSIfying a MIB module ........................... 43
11.1 Managed Object Mapping ....................................... 43 11.1 Managed Object Mapping ....................................... 43
11.1.1 Mapping to the SYNTAX clause ............................... 44 11.1.1 Mapping to the SYNTAX clause ............................... 44
11.1.2 Mapping to the UNITS clause ................................ 45 11.1.2 Mapping to the UNITS clause ................................ 45
11.1.3 Mapping to the MAX-ACCESS clause ........................... 45 11.1.3 Mapping to the MAX-ACCESS clause ........................... 45
11.1.4 Mapping to the STATUS clause ............................... 45 11.1.4 Mapping to the STATUS clause ............................... 45
11.1.5 Mapping to the DESCRIPTION clause .......................... 45 11.1.5 Mapping to the DESCRIPTION clause .......................... 45
11.1.6 Mapping to the REFERENCE clause ............................ 45 11.1.6 Mapping to the REFERENCE clause ............................ 45
11.1.7 Mapping to the INDEX clause ................................ 45 11.1.7 Mapping to the INDEX clause ................................ 45
11.1.8 Mapping to the DEFVAL clause ............................... 45 11.1.8 Mapping to the DEFVAL clause ............................... 45
11.2 Action Mapping ............................................... 46 11.2 Action Mapping ............................................... 46
11.2.1 Mapping to the SYNTAX clause ............................... 46 11.2.1 Mapping to the SYNTAX clause ............................... 46
11.2.2 Mapping to the MAX-ACCESS clause ........................... 46 11.2.2 Mapping to the MAX-ACCESS clause ........................... 46
11.2.3 Mapping to the STATUS clause ............................... 46 11.2.3 Mapping to the STATUS clause ............................... 46
11.2.4 Mapping to the DESCRIPTION clause .......................... 46 11.2.4 Mapping to the DESCRIPTION clause .......................... 46
11.2.5 Mapping to the REFERENCE clause ............................ 46 11.2.5 Mapping to the REFERENCE clause ............................ 46
11.3 Event Mapping ................................................ 46 11.3 Event Mapping ................................................ 46
11.3.1 Mapping to the STATUS clause ............................... 47 11.3.1 Mapping to the STATUS clause ............................... 47
11.3.2 Mapping to the DESCRIPTION clause .......................... 47 11.3.2 Mapping to the DESCRIPTION clause .......................... 47
11.3.3 Mapping to the REFERENCE clause ............................ 47 11.3.3 Mapping to the REFERENCE clause ............................ 47
12 Acknowledgements ............................................... 48
13 References ..................................................... 48 12 Appendix B: UTC Time Format .................................... 48
14 Security Considerations ........................................ 49 13 Appendix C: Detailed Sub-typing Rules .......................... 49
15 Authors' Addresses ............................................. 49 13.1 Syntax Rules ................................................. 49
13.2 Examples ..................................................... 50
13.3 Rules for Textual Conventions ................................ 50
14 Acknowledgements ............................................... 51
15 References ..................................................... 51
16 Security Considerations ........................................ 53
17 Authors' Addresses ............................................. 53
 End of changes. 75 change blocks. 
184 lines changed or deleted 357 lines changed or added

This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/