NTWS-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
    ntwsMibs
        FROM NTWS-ROOT-MIB;


ntwsTraplogMib MODULE-IDENTITY
    LAST-UPDATED "200903220009Z"
    ORGANIZATION "Nortel Networks"
    CONTACT-INFO
        "www.nortelnetworks.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 Nortel Networks.
        All rights reserved.
        This Nortel Networks SNMP Management Information Base Specification
        (Specification) embodies Nortel Networks' confidential and
        proprietary intellectual property.

        This Specification is supplied 'AS IS' and Nortel 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"

    ::= { ntwsMibs 13 }


-- Textual conventions

NtwsTraplogTrapOccurrenceIndex ::= 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)

NtwsTraplogTrapOccurrenceIndexOrZero ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS        current
    DESCRIPTION
        "This textual convention is an extension of the
        NtwsTraplogTrapOccurrenceIndex 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
--

ntwsTraplogMibObjects  OBJECT IDENTIFIER ::= { ntwsTraplogMib 1 }

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

ntwsTraplogGuideObjects  OBJECT IDENTIFIER ::= { ntwsTraplogMibObjects 2 }


-- Object definitions


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

ntwsTraplogOldestTrapIndex OBJECT-TYPE
    SYNTAX      NtwsTraplogTrapOccurrenceIndexOrZero
    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)."
    ::= { ntwsTraplogGuideObjects 1 }

ntwsTraplogNewestTrapIndex OBJECT-TYPE
    SYNTAX      NtwsTraplogTrapOccurrenceIndexOrZero
    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)."
    ::= { ntwsTraplogGuideObjects 2 }

ntwsTraplogNewestTrapTime 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 ntwsTraplogTrapTime
        for the latest entry in ntwsTraplogTrapTable, _if_ these
        objects were read at exactly same time."
    ::= { ntwsTraplogGuideObjects 3 }

ntwsTraplogNewestTrapDateAndTime 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 ntwsTraplogTrapDateAndTime
        for the latest entry in ntwsTraplogTrapTable, _if_ these
        objects were read at exactly same time."

    DEFVAL  { '0000000000000000'H }

    ::= { ntwsTraplogGuideObjects 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).
--

ntwsTraplogTrapTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF NtwsTraplogTrapEntry
    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
        ntwsTraplogOldestTrapIndex and the index of the youngest entry
        is specified by ntwsTraplogNewestTrapIndex.

        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 ntwsTraplogTrapTime
        for entries made before the reset MUST be set to 0."
    ::= { ntwsTraplogMibObjects 3 }

ntwsTraplogTrapEntry OBJECT-TYPE
    SYNTAX      NtwsTraplogTrapEntry
    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       { ntwsTraplogTrapIndex }

    ::= { ntwsTraplogTrapTable 1 }

NtwsTraplogTrapEntry ::= SEQUENCE {
    ntwsTraplogTrapIndex                NtwsTraplogTrapOccurrenceIndex,
    ntwsTraplogTrapTime                 TimeStamp,
    ntwsTraplogTrapDateAndTime          DateAndTime,
    ntwsTraplogTrapNotificationID       OBJECT IDENTIFIER,
    ntwsTraplogTrapNumVars              Unsigned32
}

ntwsTraplogTrapIndex OBJECT-TYPE
    SYNTAX     NtwsTraplogTrapOccurrenceIndex
    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."
    ::= { ntwsTraplogTrapEntry 1 }

ntwsTraplogTrapTime 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."
    ::= { ntwsTraplogTrapEntry 2 }

ntwsTraplogTrapDateAndTime 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."
    ::= { ntwsTraplogTrapEntry 3 }

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

ntwsTraplogTrapNumVars OBJECT-TYPE
    SYNTAX      Unsigned32 (0..4294967295)
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The Number of Variable bindings that should have been logged
        (in ntwsTraplogVarTable) for this trap occurrence."
    ::= { ntwsTraplogTrapEntry 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).
--

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

ntwsTraplogVarEntry OBJECT-TYPE
    SYNTAX      NtwsTraplogVarEntry
    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 ntwsTraplogTrapTable)."

    INDEX       { ntwsTraplogVarTrapIndex,
                  ntwsTraplogVarIndex }

    ::= { ntwsTraplogVarTable 1 }

NtwsTraplogVarEntry ::= SEQUENCE {
    ntwsTraplogVarTrapIndex          NtwsTraplogTrapOccurrenceIndex,
    ntwsTraplogVarIndex              Unsigned32,
    ntwsTraplogVarID                 OBJECT IDENTIFIER,
    ntwsTraplogVarValueType          INTEGER,
    ntwsTraplogVarCounter32Val       Counter32,
    ntwsTraplogVarUnsigned32Val      Unsigned32,
    ntwsTraplogVarTimeTicksVal       TimeTicks,
    ntwsTraplogVarInteger32Val       Integer32,
    ntwsTraplogVarOctetStringVal     OCTET STRING,
    ntwsTraplogVarIpAddressVal       IpAddress,
    ntwsTraplogVarOidVal             OBJECT IDENTIFIER,
    ntwsTraplogVarCounter64Val       Counter64
}

ntwsTraplogVarTrapIndex OBJECT-TYPE
    SYNTAX     NtwsTraplogTrapOccurrenceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The index of a logged trap, see 'ntwsTraplogTrapIndex' above."
    ::= { ntwsTraplogVarEntry 1 }

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

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

ntwsTraplogVarValueType 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."
    ::= { ntwsTraplogVarEntry 4 }

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

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

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

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

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

ntwsTraplogVarIpAddressVal OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value when ntwsTraplogVarType 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 ntwsTraplogVarOctetStringVal column."
    ::= { ntwsTraplogVarEntry 10 }

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

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


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

ntwsTraplogConformance  OBJECT IDENTIFIER ::= { ntwsTraplogMib 2 }

ntwsTraplogCompliances  OBJECT IDENTIFIER ::= { ntwsTraplogConformance 1 }
ntwsTraplogGroups       OBJECT IDENTIFIER ::= { ntwsTraplogConformance 2 }


-- Compliance


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

    MANDATORY-GROUPS { ntwsTraplogGuideGroup,
                       ntwsTraplogTrapGroup,
                       ntwsTraplogVarGroup }

    GROUP ntwsTraplogGuideDateGroup
        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 ntwsTraplogTrapDateGroup
        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."

    ::= { ntwsTraplogCompliances 1 }


-- Units of Conformance


ntwsTraplogGuideGroup OBJECT-GROUP
    OBJECTS {
              ntwsTraplogOldestTrapIndex,
              ntwsTraplogNewestTrapIndex,
              ntwsTraplogNewestTrapTime
            }
    STATUS      current
    DESCRIPTION
        "Mandatory group of global objects for managing the Trap Log."
    ::= { ntwsTraplogGroups 1 }

ntwsTraplogGuideDateGroup OBJECT-GROUP
    OBJECTS {
              ntwsTraplogNewestTrapDateAndTime
            }
    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."
    ::= { ntwsTraplogGroups 2 }

ntwsTraplogTrapGroup OBJECT-GROUP
    OBJECTS {
              ntwsTraplogTrapTime,
              ntwsTraplogTrapNotificationID,
              ntwsTraplogTrapNumVars
            }
    STATUS      current
    DESCRIPTION
        "Mandatory group of objects implemented to provide
         info on Trap occurrences."
    ::= { ntwsTraplogGroups 3 }

ntwsTraplogTrapDateGroup OBJECT-GROUP
    OBJECTS {
              ntwsTraplogTrapDateAndTime
            }
    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."
    ::= { ntwsTraplogGroups 4 }

ntwsTraplogVarGroup OBJECT-GROUP
    OBJECTS {
              ntwsTraplogVarID,
              ntwsTraplogVarValueType,
              ntwsTraplogVarCounter32Val,
              ntwsTraplogVarUnsigned32Val,
              ntwsTraplogVarTimeTicksVal,
              ntwsTraplogVarInteger32Val,
              ntwsTraplogVarOctetStringVal,
              ntwsTraplogVarIpAddressVal,
              ntwsTraplogVarOidVal,
              ntwsTraplogVarCounter64Val
            }
    STATUS      current
    DESCRIPTION
        "Mandatory group of objects implemented to provide
         info on Variable bindings."
    ::= { ntwsTraplogGroups 5 }


END
