SNMPv2-PDU DEFINITIONS ::= BEGIN

IMPORTS
    ObjectName, ObjectSyntax, Integer32
        FROM SNMPv2-SMI;


-- protocol data units

PDUs ::=
    CHOICE {
        get-request
            GetRequest-PDU,

        get-next-request
            GetNextRequest-PDU,

        get-bulk-request
            GetBulkRequest-PDU,

        response
            Response-PDU,

        set-request
            SetRequest-PDU,

        inform-request
            InformRequest-PDU,

        snmpV2-trap
            SNMPv2-Trap-PDU,

        report
            Report-PDU -- ,
    }


-- PDUs

GetRequest-PDU ::=
    [0]
        IMPLICIT PDU

GetNextRequest-PDU ::=
    [1]
        IMPLICIT PDU

Response-PDU ::=
    [2]
        IMPLICIT PDU

SetRequest-PDU ::=
    [3]
        IMPLICIT PDU

-- [4] is obsolete

GetBulkRequest-PDU ::=
    [5]
        IMPLICIT BulkPDU

InformRequest-PDU ::=
    [6]
        IMPLICIT PDU

SNMPv2-Trap-PDU ::=
    [7]
        IMPLICIT PDU

--   Usage and precise semantics of Report-PDU are not presently
--   defined.  Any SNMP administrative framework making use of
--   this PDU must define its usage and semantics.
Report-PDU ::=
    [8]
        IMPLICIT PDU

max-bindings
    INTEGER ::= 2147483647

PDU ::=
    SEQUENCE {
        request-id
            Integer32,

        error-status            -- sometimes ignored
            INTEGER {
                noError(0),
                tooBig(1),
                noSuchName(2),   -- for proxy compatibility
                badValue(3),     -- for proxy compatibility
                readOnly(4),     -- for proxy compatibility
                genErr(5),
                noAccess(6),
                wrongType(7),
                wrongLength(8),
                wrongEncoding(9),
                wrongValue(10),
                noCreation(11),
                inconsistentValue(12),
                resourceUnavailable(13),
                commitFailed(14),
                undoFailed(15),
                authorizationError(16),
                notWritable(17),
                inconsistentName(18)
            },

        error-index            -- sometimes ignored
            INTEGER (0..max-bindings),

        variable-bindings   -- values are sometimes ignored
            VarBindList
    }


BulkPDU ::=                     -- MUST be identical in
    SEQUENCE {                  -- structure to PDU
        request-id
            Integer32,

        non-repeaters
            INTEGER (0..max-bindings),

        max-repetitions
            INTEGER (0..max-bindings),

        variable-bindings       -- values are ignored
            VarBindList
    }


-- variable binding

VarBind ::=
    SEQUENCE {
        name
            ObjectName,

        CHOICE {
            value
                ObjectSyntax,

            unSpecified         -- in retrieval requests
                    NULL,

                                -- exceptions in responses
            noSuchObject[0]
                    IMPLICIT NULL,

            noSuchInstance[1]
                    IMPLICIT NULL,

            endOfMibView[2]
                    IMPLICIT NULL
        }
    }


-- variable-binding list

VarBindList ::=
    SEQUENCE (SIZE (0..max-bindings)) OF
        VarBind


END
     