-- changes to rfc1212 (Concise MIB OBJECT-TYPE definition):
--      Make it into a proper ASN.1 definition module (RFC-1212).
--      Add IMPORT of ObjectSyntax.

RFC-1212 DEFINITIONS ::= BEGIN

IMPORTS
    ObjectName, ObjectSyntax
        FROM RFC1155-SMI
    DisplayString
        FROM RFC1158-MIB;

OBJECT-TYPE MACRO ::=
BEGIN
    TYPE NOTATION ::=
                                -- must conform to
                                -- RFC1155's ObjectSyntax
                      "SYNTAX" type(ObjectSyntax)
                      "ACCESS" Access
                      "STATUS" Status
                      DescrPart
                      ReferPart
                      IndexPart
                      DefValPart
    VALUE NOTATION ::= value (VALUE ObjectName)

    Access ::= "read-only"
             | "read-write"
             | "write-only"
             | "not-accessible"
    Status ::= "mandatory"
             | "optional"
             | "obsolete"
             | "deprecated"

    DescrPart ::=
               "DESCRIPTION" value (description DisplayString)
             | empty

    ReferPart ::=
               "REFERENCE" value (reference DisplayString)
             | empty

    IndexPart ::=
               "INDEX" "{" IndexTypes "}"
             | empty
    IndexTypes ::=
               IndexType | IndexTypes "," IndexType
    IndexType ::=
                        -- if indexobject, use the SYNTAX
                        -- value of the correspondent
                        -- OBJECT-TYPE invocation
               value (indexobject ObjectName)
                        -- otherwise use named SMI type
                        -- must conform to IndexSyntax below
             | type (indextype)

    DefValPart ::=
               "DEFVAL" "{" value (defvalue ObjectSyntax) "}"
             | empty

END

IndexSyntax ::=
    CHOICE {
        number
            INTEGER (0..MAX),
        string
            OCTET STRING,
        object
            OBJECT IDENTIFIER,
        address
            NetworkAddress,
        ipAddress
            IpAddress
    }

END
