-- *******************************************************************
-- CISCO-NOTIFICATION-CONTROL-MIB
-- MIB for controlling notifications.
-- September 2006, Sujay M
--   
-- Copyright (c) 2006, 2009 by Cisco Systems Inc.
-- All rights reserved.
-- *******************************************************************

CISCO-NOTIFICATION-CONTROL-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    Unsigned32,
    OBJECT-TYPE
        FROM SNMPv2-SMI
    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF
    AutonomousType,
    StorageType,
    RowStatus
        FROM SNMPv2-TC
    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB
    ciscoMgmt
        FROM CISCO-SMI;


ciscoNotificationControlMIB MODULE-IDENTITY
    LAST-UPDATED    "200909200000Z"
    ORGANIZATION    "Cisco Systems, Inc."
    CONTACT-INFO
            "Cisco Systems
            Customer Service

            Postal: 170 W Tasman Drive
            San Jose, CA  95134
            USA
            Tel: +1 800 553-NETS 

            E-mail: cs-wanatm@cisco.com"
    DESCRIPTION
        "This MIB provides network management support to regulate
        the transmission of notifications generated by a  
        system providing networking services.  The system could  
        be generating several notifications pertaining to  
        various events.  Allowing every notification to be  
        transmitted out may lead to the network being flooded  
        with an excess of network management traffic.  Hence it  
        is required to regulate the generation and transmission  
        of notifications.  

                        GLOSSARY  

        Network Management Station (NMS)  

        An external network entity that monitors and manages the
        network."
    REVISION        "200909200000Z"
    DESCRIPTION
        "Added new object cNotifCtrlDescr to cNotifCtrlTable.Deprecated
        cNotifCtrlMIBCompliance and added cNotifCtrlMIBComplianceRev1."
    REVISION        "200609270000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { ciscoMgmt 586 }


cNotifCtrlMIBObjects  OBJECT IDENTIFIER
    ::= { ciscoNotificationControlMIB 1 }

cNotifCtrlConfig  OBJECT IDENTIFIER
    ::= { cNotifCtrlMIBObjects 1 }


cNotifCtrlMode OBJECT-TYPE
    SYNTAX          INTEGER  {
                        noControl(1),
                        forcedControl(2),
                        automaticControl(3)
                    }
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object represents the notification control mode.
        The semantics are as follows. 

        noControl - There is no control on notifications. 

        forcedControl - All notifications configured through
        cNotifCtrlTable are filtered at all times.

        automaticControl - Notifications configured through
        cNotifCtrlTable are filtered only when number of 
        notifications generated exceeds the value represented 
        by cNotifCtrlThreshold in the given time interval 
        represented by cNotifCtrlSamplingInterval."
    DEFVAL          { noControl } 
    ::= { cNotifCtrlConfig 1 }

cNotifCtrlCurrentState OBJECT-TYPE
    SYNTAX          INTEGER  {
                        controlOn(1),
                        controlOff(2)
                    }
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object represents the current state of notification
        control. The semantics are as follows.

        controlOn - This indicates that notifications configured in 
        cNotifCtrlTable are currently getting filtered on the
        system.  This object will always be 'controlOn', when 
        cNotifCtrlMode is 'forcedControl'.

        controlOff - This indicates that notifications configured 
        in cNotifCtrlTable are currently not being filtered on the
        system.  This object will always be 'controlOff', when 
        cNotifCtrlMode is 'noControl'. 

        If cNotifCtrlMode is set to 'automaticControl', the agent 
        sets this object to 'controlOn', when number of 
        notifications generated by  the system exceeds the value 
        represented by cNotifCtrlThreshold in the time interval 
        represented by cNotifCtrlSamplingInterval.  The agent sets 
        this object to 'controlOff', when the number of 
        notifications generated by the system falls below the value 
        represented by cNotifCtrlThreshold in the time interval 
        represented by  cNotifCtrlSamplingInterval."
    DEFVAL          { controlOff } 
    ::= { cNotifCtrlConfig 2 }

cNotifCtrlThreshold OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    UNITS           "notifications"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object represents the threshold value to initiate
        controlling of notifications.  Notifications will be 
        controlled when the number of notifications generated 
        by this system exceeds the threshold represented by 
        this object in the sampling interval represented by
        cNotifCtrlSamplingInterval.  The configured value takes
        effect only when cNotifCtrlMode is set to 
        'automaticControl'."
    DEFVAL          { 50 } 
    ::= { cNotifCtrlConfig 3 }

cNotifCtrlSamplingInterval OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    UNITS           "minutes"
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object represents the sampling interval in which the
        notification generation rate will be monitored.  The 
        configured value takes effect only when cNotifCtrlMode is 
        set to 'automaticControl'."
    DEFVAL          { 5 } 
    ::= { cNotifCtrlConfig 4 }

cNotifCtrlTableSize OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    MAX-ACCESS      read-write
    STATUS          current
    DESCRIPTION
        "This object represents maximum number of rows possible in
        cNotifCtrlTable."
    DEFVAL          { 200 } 
    ::= { cNotifCtrlConfig 5 }

cNotifCtrlIndexNext OBJECT-TYPE
    SYNTAX          Unsigned32 (0..4294967295)
    MAX-ACCESS      read-only
    STATUS          current
    DESCRIPTION
        "This object represents the next available free index in
        the cNotifCtrlTable.  This number can be used as an index 
        to create a valid entry into cNotifCtrlTable. 

        A value of 0 indicates that no free indices are available to
        create entries in cNotifCtrlTable." 
    ::= { cNotifCtrlConfig 6 }

cNotifCtrlTable OBJECT-TYPE
    SYNTAX          SEQUENCE OF CNotifCtrlEntry 
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This table represents the notifications to be controlled.
        To control a particular notification, user creates a row
        uniquely indexed by cNotifCtrlIndex using the
        cNotifCtrlRowStatus object.  The storage type of each row
        is indicated by  cNotifCtrlStorageType.

        The agent filters out the notification depending on the 
        current value of cNotifCtrlMode.  The agent also indicates 
        the current state of notification control through 
        cNotifCtrlCurrentState.

        This notification control mechanism is illustrated as follows.

        cNotifCtrlTable contains the list of notifications, that
        need to be controlled from the agent when 
        cNotifCtrlCurrentState is 'controlOn'.

        When cNotifCtrlMode is set to 'automaticControl', a timer is 
        started for the time interval represented by 
        cNotifCtrlSamplingInterval(eg: 10 mins) to monitor the number 
        of notifications being generated by the agent.  If the number
        of notifications generated exceeds the value represented by
        cNotifCtrlThreshold (eg: 100) before the timer expires, all
        notifications mentioned in cNotifCtrlTable are throttled.

        When the timer expires, it is restarted and the counter used
        to track the number of notifications generated is initialized to
        zero.  This controlling of notifications will continue until
        the number of notifications generated falls below the threshold
        in the given interval.

        When cNotifCtrlMode is set to 'forcedControl', all the
        notifications mentioned in cNotifCtrlTable are always
        throttled, irrespective of the values of
        threshold and sampling interval."
    ::= { cNotifCtrlConfig 7 }

cNotifCtrlEntry OBJECT-TYPE
    SYNTAX          CNotifCtrlEntry
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "A conceptual row in cNotifCtrlTable and corresponds
        to the notification to be filtered."
    INDEX           { cNotifCtrlIndex } 
    ::= { cNotifCtrlTable 1 }

CNotifCtrlEntry ::= SEQUENCE {
        cNotifCtrlIndex       Unsigned32,
        cNotifCtrlOID         AutonomousType,
        cNotifCtrlStorageType StorageType,
        cNotifCtrlRowStatus   RowStatus,
        cNotifCtrlDescr       SnmpAdminString
}

cNotifCtrlIndex OBJECT-TYPE
    SYNTAX          Unsigned32 (1..4294967295)
    MAX-ACCESS      not-accessible
    STATUS          current
    DESCRIPTION
        "This object uniquely identifies an entry in cNotifCtrlTable." 
    ::= { cNotifCtrlEntry 1 }

cNotifCtrlOID OBJECT-TYPE
    SYNTAX          AutonomousType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object represents the notification to be controlled." 
    ::= { cNotifCtrlEntry 2 }

cNotifCtrlStorageType OBJECT-TYPE
    SYNTAX          StorageType
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object represents the storage type for this
        conceptual row in cNotifCtrlTable. 

        A value of 'volatile' indicates that the entry won't be 
        persistent across system reloads.  A value of 'nonVolatile'
        indicates that the entry will be persistent across 
        system reloads."
    DEFVAL          { nonVolatile } 
    ::= { cNotifCtrlEntry 3 }

cNotifCtrlRowStatus OBJECT-TYPE
    SYNTAX          RowStatus
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object represents the status of a conceptual row.

        Following objects are mandatory while creating an entry
        in this table: 

        cNotifCtrlOID 

        Entries can't be modified after the agent sets
        cNotifCtrlRowStatus to 'active'." 
    ::= { cNotifCtrlEntry 4 }

cNotifCtrlDescr OBJECT-TYPE
    SYNTAX          SnmpAdminString (SIZE  (0..255))
    MAX-ACCESS      read-create
    STATUS          current
    DESCRIPTION
        "This object specifies a human readable string which has more
        descriptive information about the notification." 
    ::= { cNotifCtrlEntry 5 }
 

-- conformance information

cNotifCtrlMIBConformance  OBJECT IDENTIFIER
    ::= { ciscoNotificationControlMIB 2 }

cNotifCtrlMIBCompliances  OBJECT IDENTIFIER
    ::= { cNotifCtrlMIBConformance 1 }

cNotifCtrlMIBGroups  OBJECT IDENTIFIER
    ::= { cNotifCtrlMIBConformance 2 }


-- compliance statements

cNotifCtrlMIBCompliance MODULE-COMPLIANCE
    STATUS          deprecated
    DESCRIPTION
        "The compliance statement for the SNMP entities that
        implement the ciscoNotifactionControlMIB module."
    MODULE          -- this module
    MANDATORY-GROUPS { cNotifCtrlConfigGroup }

    OBJECT          cNotifCtrlStorageType
    SYNTAX          INTEGER  {
                        volatile(2),
                        nonVolatile(3)
                    }
    DESCRIPTION
        "An implementation is required to support only
        two of the the five enumerated values of the
        StorageType, namely 'volatile' and 
        'nonVolatile'."

    OBJECT          cNotifCtrlRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    DESCRIPTION
        "An implementation is required to support only
        three of the six enumerated values of the
        RowStatus textual convention, namely 'active', 
        'createAndGo' and 'destroy'."
    ::= { cNotifCtrlMIBCompliances 1 }

cNotifCtrlMIBComplianceRev1 MODULE-COMPLIANCE
    STATUS          current
    DESCRIPTION
        "The compliance statement for the SNMP entities that
        implement the ciscoNotifactionControlMIB module."
    MODULE          -- this module
    MANDATORY-GROUPS { cNotifCtrlConfigGroup }

    GROUP           cNotifCtrlConfigExtGroup
    DESCRIPTION
        "This group is required for if user wants to specify
        trap description."

    OBJECT          cNotifCtrlStorageType
    SYNTAX          INTEGER  {
                        volatile(2),
                        nonVolatile(3)
                    }
    DESCRIPTION
        "An implementation is required to support only
        two of the the five enumerated values of the
        StorageType, namely 'volatile' and 
        'nonVolatile'."

    OBJECT          cNotifCtrlRowStatus
    SYNTAX          INTEGER  {
                        active(1),
                        createAndGo(4),
                        destroy(6)
                    }
    DESCRIPTION
        "An implementation is required to support only
        three of the six enumerated values of the
        RowStatus textual convention, namely 'active', 
        'createAndGo' and 'destroy'."

    OBJECT          cNotifCtrlDescr
    MIN-ACCESS      read-only
    DESCRIPTION
        "Write access is not required."
    ::= { cNotifCtrlMIBCompliances 2 }

-- units of conformance

cNotifCtrlConfigGroup OBJECT-GROUP
    OBJECTS         {
                        cNotifCtrlMode,
                        cNotifCtrlCurrentState,
                        cNotifCtrlThreshold,
                        cNotifCtrlSamplingInterval,
                        cNotifCtrlTableSize,
                        cNotifCtrlIndexNext,
                        cNotifCtrlOID,
                        cNotifCtrlStorageType,
                        cNotifCtrlRowStatus
                    }
    STATUS          current
    DESCRIPTION
        "This collection of objects represents the configuration,
        monitoring and status parameters related to notification
        control."
    ::= { cNotifCtrlMIBGroups 1 }

cNotifCtrlConfigExtGroup OBJECT-GROUP
    OBJECTS         { cNotifCtrlDescr }
    STATUS          current
    DESCRIPTION
        "The extended set of notification control variable(s)."
    ::= { cNotifCtrlMIBGroups 2 }

END



