-- Changes to rfc1155 (SMI):
--      Removed EXPORTS.
--      Added explicit definitions of ccitt, null, iso, org, and dod.
--      Commented out OBJECT-TYPE macro definition (since will use
--        the definition from RFC1212).
--      Commented out definitions of syntax types and replaced
--        with SMIC directives to enable them.


        RFC1155-SMI DEFINITIONS ::= BEGIN

        -- no IMPORTS

        -- Define OIDs
        ccitt        OBJECT IDENTIFIER ::= { 0 }
        null         OBJECT IDENTIFIER ::= { ccitt 0 }

        iso          OBJECT IDENTIFIER ::= { 1 }
        org          OBJECT IDENTIFIER ::= { iso 3 }
        dod          OBJECT IDENTIFIER ::= { org 6 }
        internet     OBJECT IDENTIFIER ::= { dod 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 }

        -- Make builtin items known
        SMI NetworkAddress
        SMI IpAddress
        SMI Counter
        SMI Gauge
        SMI TimeTicks
        SMI Opaque


        -- definition of object types

        --    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
        --
        -- names of objects in the MIB
        --
        --       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]
        --                  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]
        --                  IMPLICIT OCTET STRING
END
