RFC1155-SMI(7)

RFC1155-SMI DEFINITIONS ::= BEGIN
EXPORTS -- EVERYTHING
        internet, directory, mgmt,
        experimental, private, enterprises,
        OBJECT-TYPE, ObjectName, ObjectSyntax, SimpleSyntax,
        ApplicationSyntax, NetworkAddress, IpAddress,
        Counter, Gauge, TimeTicks, Opaque;
internet      OBJECT IDENTIFIER ::= { iso org(3) dod(6) 1 }
directory     OBJECT IDENTIFIER ::= { internet 1 }
mgmt          OBJECT IDENTIFIER ::= { internet 2 }
experimental  OBJECT IDENTIFIER ::= { internet 3 }
private       OBJECT IDENTIFIER ::= { internet 4 }
enterprises   OBJECT IDENTIFIER ::= { private 1 }
OBJECT-TYPE MACRO ::=
BEGIN
    TYPE NOTATION ::= "SYNTAX" type (TYPE ObjectSyntax)
                      "ACCESS" Access
                      "STATUS" Status
    VALUE NOTATION ::= value (VALUE ObjectName)
    Access ::= "read-only"
                    | "read-write"
                    | "write-only"
                    | "not-accessible"
    Status ::= "mandatory"
                    | "optional"
                    | "obsolete"
END
ObjectName ::=
       OBJECT IDENTIFIER
   -- syntax of objects in the MIB
   ObjectSyntax ::=
       CHOICE {
           simple
               SimpleSyntax,
   -- note that simple SEQUENCEs are not directly
   -- mentioned here to keep things simple (i.e.,
   -- prevent mis-use).  However, application-wide
   -- types which are IMPLICITly encoded simple
   -- SEQUENCEs may appear in the following CHOICE
           application-wide
               ApplicationSyntax
       }
      SimpleSyntax ::=
          CHOICE {
              number
                  INTEGER,
              string
                  OCTET STRING,
              object
                  OBJECT IDENTIFIER,
              empty
                  NULL
          }
      ApplicationSyntax ::=
          CHOICE {
              address
                  NetworkAddress,
              counter
                  Counter,
              gauge
                  Gauge,
              ticks
                  TimeTicks,
              arbitrary
                  Opaque
      -- other application-wide types, as they are
      -- defined, will be added here
          }
      -- application-wide types
      NetworkAddress ::=
          CHOICE {
              internet
                  IpAddress
          }
      IpAddress ::=
          [APPLICATION 0]          -- in network-byte order
              IMPLICIT OCTET STRING (SIZE (4))
      Counter ::=
          [APPLICATION 1]
              IMPLICIT INTEGER (0..4294967295)
      Gauge ::=
          [APPLICATION 2]
              IMPLICIT INTEGER (0..4294967295)
      TimeTicks ::=
          [APPLICATION 3]
              IMPLICIT INTEGER (0..4294967295)
      Opaque ::=
          [APPLICATION 4]          -- arbitrary ASN.1 value,
              IMPLICIT OCTET STRING   --   "double-wrapped"
END