Previous Table of Contents Next


5.5.2.3 SNMPv2-Trap PDU

In SNMP version 1, the syntax of the Trap PDU differed from the other PDUs. With SNMPv2, the SNMPv1 Trap is now obsolete and has been replaced by the SNMPv2-Trap PDU, which maintains a structure consistent with the other SNMPv2 PDUs. Agents transmit SNMPv2 PDUs when an exceptional situation occurs. The destination(s) to which an SNMPv2-Trap PDU is sent is determined by the implementation of that SNMP application. The first variable in the SNMPv2-Trap is sysUpTime.0, from MIB-II. The second variable is snmpTrapOID.0, from the Traps group within the SNMPv2 MIB, which contains the administratively assigned name of the notification. Subsequent variables provide more information on the Trap.

5.5.3 SNMPv2 PDU Definitions

For your reference, the following is a list of definitions for the SNMP PDUs, taken from the SNMPv2 Protocol Operations document [5-6]:

   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 ::=
     [5]
               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


Previous Table of Contents Next