SNMPv2-SMI DEFINITIONS ::= BEGIN
 
 
-- the path to the root
 
-- iso            OBJECT IDENTIFIER ::= { 1 }
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
    --   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
                  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
    }
 
-- 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
-- (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
                  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
    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
                | 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