TRAPEZE-NETWORKS-TRAPLOG-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    Integer32, Unsigned32,
    TimeTicks, Counter32, Counter64,
    IpAddress
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE, OBJECT-GROUP
        FROM SNMPv2-CONF
    TEXTUAL-CONVENTION,
    TimeStamp, DateAndTime
        FROM SNMPv2-TC
    trpzMibs
        FROM TRAPEZE-NETWORKS-ROOT-MIB;


trpzTraplogMib MODULE-IDENTITY
    LAST-UPDATED "200903220009Z"
    ORGANIZATION "Trapeze Networks"
    CONTACT-INFO
        "Trapeze Networks Technical Support
         www.trapezenetworks.com
         US:            866.TRPZ.TAC
         International: 925.474.2400
         support@trapezenetworks.com"
    DESCRIPTION
        "Trap Log MIB: information about most recent traps generated by
                an Access Controller (wireless switch).

        A trap occurrence that could be logged corresponds to an event
        detected by the Access Controller (wireless switch).
        Not all kinds of events will cause a Trap Log entry to be added.
        The list of accepted notification types should be configurable.

        This MIB does _not_ specify any means for configuring
        the notification types accepted for logging (the ''filter'').

        Configuration options for filtering (not necessarily SNMP-based)
        should be described in the manuals for the wireless switch.

        There is _no_ guarantee that the Trap Log will be preserved
        in part or in total across restarts of the SNMP agent.

        The Trap Log as a whole operates like a circular buffer:
        if adding a new entry (trap occurrence) would exhaust the
        available resources, the oldest entry (or entries)
        will be discarded.

        This MIB does _not_ specify any means for configuring
        any of the resource limits applicable to trap logging.

        Copyright 2009 Trapeze Networks, Inc.
        All rights reserved.
        This Trapeze Networks SNMP Management Information Base
        Specification (Specification) embodies Trapeze Networks'
        confidential and proprietary intellectual property.
        Trapeze Networks retains all title and ownership in
        the Specification, including any revisions.

        This Specification is supplied 'AS IS' and Trapeze Networks
        makes no warranty, either express or implied, as to the use,
        operation, condition, or performance of the Specification."

    REVISION "200903220009Z"
    DESCRIPTION "v1.0.9: Initial version, for 7.1 release"

    ::= { trpzMibs 13 }


-- Textual conventions

TrpzTraplogTrapOccurrenceIndex ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS        current
    DESCRIPTION
        "Trap Occurrence Index (in the Trap Log).
        A monotonically increasing integer for the sole purpose of
        indexing entries within the trap log.  When it reaches the
        maximum value, an extremely unlikely event, the agent wraps the
        value back to 1."
    SYNTAX     Unsigned32 (1..4294967295)

TrpzTraplogTrapOccurrenceIndexOrZero ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS        current
    DESCRIPTION
        "This textual convention is an extension of the
        TrpzTraplogTrapOccurrenceIndex convention.
        The latter defines a greater than zero value used to identify
        each trap occurrence recorded in the trap log.
        This extension permits the additional value of zero.
        A zero value means 'none', 'there is no such trap occurrence'."
    SYNTAX     Unsigned32 (0 | 1..4294967295)


--
-- The Traplog MIB Tree
--

trpzTraplogMibObjects  OBJECT IDENTIFIER ::= { trpzTraplogMib 1 }

-- Reserved for future scalar objects (high-level status/control of Trap Log):
-- trpzTraplogGlobalObjects  OBJECT IDENTIFIER ::= { trpzTraplogMibObjects 1 }

trpzTraplogGuideObjects  OBJECT IDENTIFIER ::= { trpzTraplogMibObjects 2 }


-- Object definitions


-- ========================================
-- Global objects for managing the Trap Log
--
-- Read-only scalar objects
--

trpzTraplogOldestTrapIndex OBJECT-TYPE
    SYNTAX      TrpzTraplogTrapOccurrenceIndexOrZero
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Index of the Oldest Trap occurrence currently stored in the Trap Log.
        This will be the first entry overwritten when the Trap Log gets full.
        A zero value means that no trap was logged yet (possibly because
        trap logging is disabled)."
    ::= { trpzTraplogGuideObjects 1 }

trpzTraplogNewestTrapIndex OBJECT-TYPE
    SYNTAX      TrpzTraplogTrapOccurrenceIndexOrZero
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Index of the Newest Trap occurrence currently stored in the Trap Log.
        A zero value means that no trap was logged yet (possibly because
        trap logging is disabled)."
    ::= { trpzTraplogGuideObjects 2 }

trpzTraplogNewestTrapTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime when the latest entry was placed in the log.
        If the entry occurred before the most recent management system
        initialization this object value MUST be set to zero.

        If no trap was logged yet this object value MUST be set to zero.

        Otherwise should be same as the value of trpzTraplogTrapTime
        for the latest entry in trpzTraplogTrapTable, _if_ these
        objects were read at exactly same time."
    ::= { trpzTraplogGuideObjects 3 }

trpzTraplogNewestTrapDateAndTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The local date and time of the latest trap occurrence.
        Instantiated only by systems that have date and time capability.

        A value of '0000000000000000'H (all zeros, length 8 octets)
        means that no trap was logged yet (possibly because
        trap logging is disabled).

        Otherwise should be same as the value of trpzTraplogTrapDateAndTime
        for the latest entry in trpzTraplogTrapTable, _if_ these
        objects were read at exactly same time."

    DEFVAL  { '0000000000000000'H }

    ::= { trpzTraplogGuideObjects 4 }


-- ==========
-- Main table: trap occurrences
--
-- The design of this table is based on the corresponding table
-- from the standard NOTIFICATION-LOG-MIB (published as RFC 3014).
--

trpzTraplogTrapTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF TrpzTraplogTrapEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The main Trap Log table: contains the most recent traps generated.

        The index of the oldest entry is specified by
        trpzTraplogOldestTrapIndex and the index of the youngest entry
        is specified by trpzTraplogNewestTrapIndex.

        It is an implementation-specific matter whether entries in this
        table are preserved across initializations of the management
        system.  In general one would expect that they are not.

        Note that keeping entries across initializations of the
        management system leads to some confusion with counters and
        TimeStamps, since both of those are based on sysUpTime, which
        resets on management initialization.  In this situation,
        counters apply only after the reset and trpzTraplogTrapTime
        for entries made before the reset MUST be set to 0."
    ::= { trpzTraplogMibObjects 3 }

trpzTraplogTrapEntry OBJECT-TYPE
    SYNTAX      TrpzTraplogTrapEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A Trap Log entry corresponds to a trap occurrence.

        Entries appear in this table when notifications occur and pass
        any filtering rules that may be configured on the switch.
        They are removed to make way for new entries due to lack of resources
        or when the configured limits are reached.

        If adding an entry would exceed the configured limits
        or system resources in general, the oldest entry (or entries)
        must be removed to make room for the new one.

        The index for an existing entry is not affected
        when a entry is added or removed from this table."

    INDEX       { trpzTraplogTrapIndex }

    ::= { trpzTraplogTrapTable 1 }

TrpzTraplogTrapEntry ::= SEQUENCE {
    trpzTraplogTrapIndex                TrpzTraplogTrapOccurrenceIndex,
    trpzTraplogTrapTime                 TimeStamp,
    trpzTraplogTrapDateAndTime          DateAndTime,
    trpzTraplogTrapNotificationID       OBJECT IDENTIFIER,
    trpzTraplogTrapNumVars              Unsigned32
}

trpzTraplogTrapIndex OBJECT-TYPE
    SYNTAX     TrpzTraplogTrapOccurrenceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A monotonically increasing integer for the sole purpose of
        indexing entries within this log.  When it reaches the
        maximum value, an extremely unlikely event, the agent wraps
        the value back to 1."
    ::= { trpzTraplogTrapEntry 1 }

trpzTraplogTrapTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime when the entry was placed in the log.
        If the entry occurred before the most recent management system
        initialization this object value MUST be set to zero."
    ::= { trpzTraplogTrapEntry 2 }

trpzTraplogTrapDateAndTime OBJECT-TYPE
    SYNTAX      DateAndTime
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The local date and time when the entry was logged, instantiated
        only by systems that have date and time capability."
    ::= { trpzTraplogTrapEntry 3 }

trpzTraplogTrapNotificationID OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The NOTIFICATION-TYPE object identifier of the Notification
        that occurred."
    ::= { trpzTraplogTrapEntry 4 }

trpzTraplogTrapNumVars OBJECT-TYPE
    SYNTAX      Unsigned32 (0..4294967295)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Number of Variable bindings that should have been logged
        (in trpzTraplogVarTable) for this trap occurrence."
    ::= { trpzTraplogTrapEntry 5 }


-- ============
-- Detail table: Variable Bindings for the logged trap occurrences
--
-- (Note: There may be traps without variable bindings.)
--
-- The design of this table is based on the corresponding table
-- from the standard NOTIFICATION-LOG-MIB (published as RFC 3014).
--

trpzTraplogVarTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF TrpzTraplogVarEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The Trap Log detail table: Variable bindings
        for the currently stored trap occurrences
        (existing entries in trpzTraplogTrapTable)."
    ::= { trpzTraplogMibObjects 4 }

trpzTraplogVarEntry OBJECT-TYPE
    SYNTAX      TrpzTraplogVarEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Trap Log Variable binding entry.

        Entries appear in this table when there are variables in
        the varbind list of a trap occurrence that is currently stored
        (has an entry in trpzTraplogTrapTable)."

    INDEX       { trpzTraplogVarTrapIndex,
                  trpzTraplogVarIndex }

    ::= { trpzTraplogVarTable 1 }

TrpzTraplogVarEntry ::= SEQUENCE {
    trpzTraplogVarTrapIndex          TrpzTraplogTrapOccurrenceIndex,
    trpzTraplogVarIndex              Unsigned32,
    trpzTraplogVarID                 OBJECT IDENTIFIER,
    trpzTraplogVarValueType          INTEGER,
    trpzTraplogVarCounter32Val       Counter32,
    trpzTraplogVarUnsigned32Val      Unsigned32,
    trpzTraplogVarTimeTicksVal       TimeTicks,
    trpzTraplogVarInteger32Val       Integer32,
    trpzTraplogVarOctetStringVal     OCTET STRING,
    trpzTraplogVarIpAddressVal       IpAddress,
    trpzTraplogVarOidVal             OBJECT IDENTIFIER,
    trpzTraplogVarCounter64Val       Counter64
}

trpzTraplogVarTrapIndex OBJECT-TYPE
    SYNTAX     TrpzTraplogTrapOccurrenceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The index of a logged trap, see 'trpzTraplogTrapIndex' above."
    ::= { trpzTraplogVarEntry 1 }

trpzTraplogVarIndex OBJECT-TYPE
    SYNTAX     Unsigned32 (1..4294967295)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "A monotonically increasing integer, starting at 1 for a given
        trpzTraplogTrapIndex, for indexing variables within the logged trap."
    ::= { trpzTraplogVarEntry 2 }

trpzTraplogVarID OBJECT-TYPE
    SYNTAX     OBJECT IDENTIFIER
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The variable's object identifier."
    ::= { trpzTraplogVarEntry 3 }

trpzTraplogVarValueType OBJECT-TYPE
    SYNTAX      INTEGER {
                    counter32    (1),
                    unsigned32   (2),
                    timeTicks    (3),
                    integer32    (4),
                    ipAddress    (5),
                    octetString  (6),
                    objectId     (7),
                    counter64    (8)
                }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The type of the value.  One and only one of the value
        objects that follow must be instantiated, based on this type."
    ::= { trpzTraplogVarEntry 4 }

trpzTraplogVarCounter32Val OBJECT-TYPE
    SYNTAX      Counter32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when trpzTraplogVarType is 'counter32'."
    ::= { trpzTraplogVarEntry 5 }

trpzTraplogVarUnsigned32Val OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when trpzTraplogVarType is 'unsigned32'."
    ::= { trpzTraplogVarEntry 6 }

trpzTraplogVarTimeTicksVal OBJECT-TYPE
    SYNTAX      TimeTicks
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when trpzTraplogVarType is 'timeTicks'."
    ::= { trpzTraplogVarEntry 7 }

trpzTraplogVarInteger32Val OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when trpzTraplogVarType is 'integer32'."
    ::= { trpzTraplogVarEntry 8 }

trpzTraplogVarOctetStringVal OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when trpzTraplogVarType is 'octetString'."
    ::= { trpzTraplogVarEntry 9 }

trpzTraplogVarIpAddressVal OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when trpzTraplogVarType is 'ipAddress'.
        This is an IPv4 format address, known as IpAddress.

        IPv6 addresses are represented using TAddress or
        InetAddress, and so the underlying datatype is
        OCTET STRING, and their value would be stored in
        the trpzTraplogVarOctetStringVal column."
    ::= { trpzTraplogVarEntry 10 }

trpzTraplogVarOidVal OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when trpzTraplogVarType is 'objectId'."
    ::= { trpzTraplogVarEntry 11 }

trpzTraplogVarCounter64Val OBJECT-TYPE
    SYNTAX      Counter64
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when trpzTraplogVarType is 'counter64'."
    ::= { trpzTraplogVarEntry 12 }


-- ============================================================================
--
-- Conformance
--

trpzTraplogConformance  OBJECT IDENTIFIER ::= { trpzTraplogMib 2 }

trpzTraplogCompliances  OBJECT IDENTIFIER ::= { trpzTraplogConformance 1 }
trpzTraplogGroups       OBJECT IDENTIFIER ::= { trpzTraplogConformance 2 }


-- Compliance


trpzTraplogCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for devices that implement
        the Traplog MIB."
    MODULE  -- trpzTraplogMib

    MANDATORY-GROUPS { trpzTraplogGuideGroup,
                       trpzTraplogTrapGroup,
                       trpzTraplogVarGroup }

    GROUP trpzTraplogGuideDateGroup
        DESCRIPTION
            "This group is mandatory on systems that keep wall clock
            date and time and should not be implemented on systems that
            do not have a wall clock date."

    GROUP trpzTraplogTrapDateGroup
        DESCRIPTION
            "This group is mandatory on systems that keep wall clock
            date and time and should not be implemented on systems that
            do not have a wall clock date."

    ::= { trpzTraplogCompliances 1 }


-- Units of Conformance


trpzTraplogGuideGroup OBJECT-GROUP
    OBJECTS {
              trpzTraplogOldestTrapIndex,
              trpzTraplogNewestTrapIndex,
              trpzTraplogNewestTrapTime
            }
    STATUS      current
    DESCRIPTION
        "Mandatory group of global objects for managing the Trap Log."
    ::= { trpzTraplogGroups 1 }

trpzTraplogGuideDateGroup OBJECT-GROUP
    OBJECTS {
              trpzTraplogNewestTrapDateAndTime
            }
    STATUS      current
    DESCRIPTION
        "Conditionally mandatory global objects for managing the Trap Log.
        This group is mandatory on systems that keep wall
        clock date and time and should not be implemented
        on systems that do not have a wall clock date."
    ::= { trpzTraplogGroups 2 }

trpzTraplogTrapGroup OBJECT-GROUP
    OBJECTS {
              trpzTraplogTrapTime,
              trpzTraplogTrapNotificationID,
              trpzTraplogTrapNumVars
            }
    STATUS      current
    DESCRIPTION
        "Mandatory group of objects implemented to provide
         info on Trap occurrences."
    ::= { trpzTraplogGroups 3 }

trpzTraplogTrapDateGroup OBJECT-GROUP
    OBJECTS {
              trpzTraplogTrapDateAndTime
            }
    STATUS current
    DESCRIPTION
        "Conditionally mandatory Trap occurrence info.
        This group is mandatory on systems that keep wall
        clock date and time and should not be implemented
        on systems that do not have a wall clock date."
    ::= { trpzTraplogGroups 4 }

trpzTraplogVarGroup OBJECT-GROUP
    OBJECTS {
              trpzTraplogVarID,
              trpzTraplogVarValueType,
              trpzTraplogVarCounter32Val,
              trpzTraplogVarUnsigned32Val,
              trpzTraplogVarTimeTicksVal,
              trpzTraplogVarInteger32Val,
              trpzTraplogVarOctetStringVal,
              trpzTraplogVarIpAddressVal,
              trpzTraplogVarOidVal,
              trpzTraplogVarCounter64Val
            }
    STATUS      current
    DESCRIPTION
        "Mandatory group of objects implemented to provide
         info on Variable bindings."
    ::= { trpzTraplogGroups 5 }


END
