SNMP-NOTIFICATION-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY,
    OBJECT-TYPE,
    snmpModules
        FROM SNMPv2-SMI

    RowStatus,
    StorageType
        FROM SNMPv2-TC

    SnmpAdminString
        FROM SNMP-FRAMEWORK-MIB

    SnmpTagValue,
    snmpTargetParamsName
        FROM SNMP-TARGET-MIB

    MODULE-COMPLIANCE,
    OBJECT-GROUP
        FROM SNMPv2-CONF;

snmpNotificationMIB MODULE-IDENTITY
    LAST-UPDATED "9808040000Z"
    ORGANIZATION "IETF SNMPv3 Working Group"
    CONTACT-INFO
        "WG-email:   snmpv3@lists.tislabs.com
         Subscribe:  majordomo@lists.tislabs.com
                     In message body:  subscribe snmpv3

         Chair:      Russ Mundy
                     Trusted Information Systems
         Postal:     3060 Washington Rd
                     Glenwood MD 21738
                     USA
         EMail:      mundy@tislabs.com
         Phone:      +1-301-854-6889

         Co-editor:  David B. Levi
                     SNMP Research, Inc.
         Postal:     3001 Kimberlin Heights Road
                     Knoxville, TN 37920-9716
         EMail:      levi@snmp.com
         Phone:      +1 423 573 1434

         Co-editor:  Paul Meyer
                     Secure Computing Corporation
         Postal:     2675 Long Lake Road
                     Roseville, MN 55113
         EMail:      paul_meyer@securecomputing.com
         Phone:      +1 651 628 1592

         Co-editor:  Bob Stewart
                     Cisco Systems, Inc.
         Postal:     170 West Tasman Drive
                     San Jose, CA 95134-1706
         EMail:      bstewart@cisco.com
         Phone:      +1 603 654 2686"
    DESCRIPTION
        "This MIB module defines MIB objects which provide
         mechanisms to remotely configure the parameters
         used by an SNMP entity for the generation of

         notifications."
    REVISION    "9808040000Z"
    DESCRIPTION "Clarifications, published as
                 RFC2573"
    REVISION    "9707140000Z"
    DESCRIPTION "The initial revision, published as RFC2273."
    ::= { snmpModules 13 }

snmpNotifyObjects       OBJECT IDENTIFIER ::=
                                          { snmpNotificationMIB 1 }
snmpNotifyConformance   OBJECT IDENTIFIER ::=
                                          { snmpNotificationMIB 3 }

--
--
-- The snmpNotifyObjects group
--
--

snmpNotifyTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SnmpNotifyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table is used to select management targets which should
         receive notifications, as well as the type of notification
         which should be sent to each selected management target."
    ::= { snmpNotifyObjects 1 }

snmpNotifyEntry OBJECT-TYPE
    SYNTAX      SnmpNotifyEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in this table selects a set of management targets
         which should receive notifications, as well as the type of
         notification which should be sent to each selected
         management target.

         Entries in the snmpNotifyTable are created and
         deleted using the snmpNotifyRowStatus object."
    INDEX { IMPLIED snmpNotifyName }
    ::= { snmpNotifyTable 1 }

SnmpNotifyEntry ::= SEQUENCE {
    snmpNotifyName         SnmpAdminString,
    snmpNotifyTag          SnmpTagValue,
    snmpNotifyType         INTEGER,
    snmpNotifyStorageType  StorageType,
    snmpNotifyRowStatus    RowStatus
}

snmpNotifyName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The locally arbitrary, but unique identifier associated
         with this snmpNotifyEntry."
    ::= { snmpNotifyEntry 1 }

snmpNotifyTag OBJECT-TYPE
    SYNTAX      SnmpTagValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object contains a single tag value which is used
         to select entries in the snmpTargetAddrTable.  Any entry
         in the snmpTargetAddrTable which contains a tag value
         which is equal to the value of an instance of this
         object is selected.  If this object contains a value
         of zero length, no entries are selected."
    DEFVAL { "" }
    ::= { snmpNotifyEntry 2 }

snmpNotifyType OBJECT-TYPE
    SYNTAX      INTEGER {
                    trap(1),
                    inform(2)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object determines the type of notification to
         be generated for entries in the snmpTargetAddrTable
         selected by the corresponding instance of
         snmpNotifyTag.  This value is only used when
         generating notifications, and is ignored when
         using the snmpTargetAddrTable for other purposes.

         If the value of this object is trap(1), then any
         messages generated for selected rows will contain
         Unconfirmed-Class PDUs.

         If the value of this object is inform(2), then any
         messages generated for selected rows will contain

         Confirmed-Class PDUs.

         Note that if an SNMP entity only supports
         generation of Unconfirmed-Class PDUs (and not
         Confirmed-Class PDUs), then this object may be
         read-only."
    DEFVAL { trap }
    ::= { snmpNotifyEntry 3 }
snmpNotifyStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The storage type for this conceptual row."
    DEFVAL { nonVolatile }
    ::= { snmpNotifyEntry 4 }

snmpNotifyRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this conceptual row.

         To create a row in this table, a manager must
         set this object to either createAndGo(4) or
         createAndWait(5)."
    ::= { snmpNotifyEntry 5 }

snmpNotifyFilterProfileTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SnmpNotifyFilterProfileEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table is used to associate a notification filter
         profile with a particular set of target parameters."
    ::= { snmpNotifyObjects 2 }

snmpNotifyFilterProfileEntry OBJECT-TYPE
    SYNTAX      SnmpNotifyFilterProfileEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in this table indicates the name of the filter
         profile to be used when generating notifications using
         the corresponding entry in the snmpTargetParamsTable.

         Entries in the snmpNotifyFilterProfileTable are created

         and deleted using the snmpNotifyFilterProfileRowStatus
         object."
    INDEX { IMPLIED snmpTargetParamsName }
    ::= { snmpNotifyFilterProfileTable 1 }

SnmpNotifyFilterProfileEntry ::= SEQUENCE {
    snmpNotifyFilterProfileName         SnmpAdminString,
    snmpNotifyFilterProfileStorType     StorageType,
    snmpNotifyFilterProfileRowStatus    RowStatus
}

snmpNotifyFilterProfileName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE(1..32))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The name of the filter profile to be used when generating
         notifications using the corresponding entry in the
         snmpTargetAddrTable."
    ::= { snmpNotifyFilterProfileEntry 1 }

snmpNotifyFilterProfileStorType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The storage type of this conceptual row."
    DEFVAL { nonVolatile }
    ::= { snmpNotifyFilterProfileEntry 2 }

snmpNotifyFilterProfileRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this conceptual row.

         To create a row in this table, a manager must
         set this object to either createAndGo(4) or
         createAndWait(5).

         Until instances of all corresponding columns are
         appropriately configured, the value of the
         corresponding instance of the
         snmpNotifyFilterProfileRowStatus column is 'notReady'.

         In particular, a newly created row cannot be made
         active until the corresponding instance of

         snmpNotifyFilterProfileName has been set."
    ::= { snmpNotifyFilterProfileEntry 3 }

snmpNotifyFilterTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF SnmpNotifyFilterEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The table of filter profiles.  Filter profiles are used
         to determine whether particular management targets should
         receive particular notifications.

         When a notification is generated, it must be compared
         with the filters associated with each management target
         which is configured to receive notifications, in order to
         determine whether it may be sent to each such management
         target.

         A more complete discussion of notification filtering
         can be found in section 6. of [RFC2573]."
    ::= { snmpNotifyObjects 3 }

snmpNotifyFilterEntry OBJECT-TYPE
    SYNTAX      SnmpNotifyFilterEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An element of a filter profile.

         Entries in the snmpNotifyFilterTable are created and
         deleted using the snmpNotifyFilterRowStatus object."
    INDEX {         snmpNotifyFilterProfileName,
            IMPLIED snmpNotifyFilterSubtree }
    ::= { snmpNotifyFilterTable 1 }

SnmpNotifyFilterEntry ::= SEQUENCE {
    snmpNotifyFilterSubtree           OBJECT IDENTIFIER,
    snmpNotifyFilterMask              OCTET STRING,
    snmpNotifyFilterType              INTEGER,
    snmpNotifyFilterStorageType       StorageType,
    snmpNotifyFilterRowStatus         RowStatus
}

snmpNotifyFilterSubtree OBJECT-TYPE
    SYNTAX      OBJECT IDENTIFIER
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The MIB subtree which, when combined with the corresponding
         instance of snmpNotifyFilterMask, defines a family of
         subtrees which are included in or excluded from the
         filter profile."
    ::= { snmpNotifyFilterEntry 1 }
snmpNotifyFilterMask OBJECT-TYPE
    SYNTAX      OCTET STRING (SIZE(0..16))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The bit mask which, in combination with the corresponding
         instance of snmpNotifyFilterSubtree, defines a family of
         subtrees which are included in or excluded from the
         filter profile.

         Each bit of this bit mask corresponds to a
         sub-identifier of snmpNotifyFilterSubtree, with the
         most significant bit of the i-th octet of this octet
         string value (extended if necessary, see below)
         corresponding to the (8*i - 7)-th sub-identifier, and
         the least significant bit of the i-th octet of this
         octet string corresponding to the (8*i)-th
         sub-identifier, where i is in the range 1 through 16.

         Each bit of this bit mask specifies whether or not
         the corresponding sub-identifiers must match when
         determining if an OBJECT IDENTIFIER matches this
         family of filter subtrees; a '1' indicates that an
         exact match must occur; a '0' indicates 'wild card',
         i.e., any sub-identifier value matches.

         Thus, the OBJECT IDENTIFIER X of an object instance
         is contained in a family of filter subtrees if, for
         each sub-identifier of the value of
         snmpNotifyFilterSubtree, either:

           the i-th bit of snmpNotifyFilterMask is 0, or

           the i-th sub-identifier of X is equal to the i-th
           sub-identifier of the value of
           snmpNotifyFilterSubtree.

         If the value of this bit mask is M bits long and
         there are more than M sub-identifiers in the
         corresponding instance of snmpNotifyFilterSubtree,
         then the bit mask is extended with 1's to be the
         required length.

         Note that when the value of this object is the
         zero-length string, this extension rule results in
         a mask of all-1's being used (i.e., no 'wild card'),
         and the family of filter subtrees is the one
         subtree uniquely identified by the corresponding
         instance of snmpNotifyFilterSubtree."
    DEFVAL { ''H }
    ::= { snmpNotifyFilterEntry 2 }

snmpNotifyFilterType OBJECT-TYPE
    SYNTAX      INTEGER {
                    included(1),
                    excluded(2)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object indicates whether the family of filter subtrees
         defined by this entry are included in or excluded from a
         filter.  A more detailed discussion of the use of this
         object can be found in section 6. of [RFC2573]."
    DEFVAL { included }
    ::= { snmpNotifyFilterEntry 3 }

snmpNotifyFilterStorageType OBJECT-TYPE
    SYNTAX      StorageType
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The storage type of this conceptual row."
    DEFVAL { nonVolatile }
    ::= { snmpNotifyFilterEntry 4 }

snmpNotifyFilterRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this conceptual row.

         To create a row in this table, a manager must
         set this object to either createAndGo(4) or
         createAndWait(5)."
    ::= { snmpNotifyFilterEntry 5 }

--
--
-- Conformance information

--
--
snmpNotifyCompliances OBJECT IDENTIFIER ::=
                                        { snmpNotifyConformance 1 }
snmpNotifyGroups      OBJECT IDENTIFIER ::=
                                        { snmpNotifyConformance 2 }

--
--
-- Compliance statements
--
--

snmpNotifyBasicCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for minimal SNMP entities which
         implement only SNMP Unconfirmed-Class notifications and
         read-create operations on only the snmpTargetAddrTable."
    MODULE SNMP-TARGET-MIB
        MANDATORY-GROUPS { snmpTargetBasicGroup }

        OBJECT snmpTargetParamsMPModel
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access is not required."

        OBJECT snmpTargetParamsSecurityModel
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access is not required."

        OBJECT snmpTargetParamsSecurityName
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access is not required."

        OBJECT snmpTargetParamsSecurityLevel
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access is not required."

        OBJECT snmpTargetParamsStorageType
        SYNTAX INTEGER {
            readOnly(5)
        }
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access is not required.
             Support of the values other(1), volatile(2),
             nonVolatile(3), and permanent(4) is not required."

        OBJECT snmpTargetParamsRowStatus
        SYNTAX INTEGER {
            active(1)
        }
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access to the
             snmpTargetParamsTable is not required.
             Support of the values notInService(2), notReady(3),
             createAndGo(4), createAndWait(5), and destroy(6) is
             not required."

    MODULE -- This Module
        MANDATORY-GROUPS { snmpNotifyGroup }

        OBJECT snmpNotifyTag
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access is not required."

        OBJECT snmpNotifyType
        SYNTAX INTEGER {
            trap(1)
        }
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access is not required.
             Support of the value notify(2) is not required."

        OBJECT snmpNotifyStorageType
        SYNTAX INTEGER {
            readOnly(5)
        }
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access is not required.
             Support of the values other(1), volatile(2),
             nonVolatile(3), and permanent(4) is not required."

        OBJECT snmpNotifyRowStatus
        SYNTAX INTEGER {
            active(1)
        }
        MIN-ACCESS    read-only
        DESCRIPTION
            "Create/delete/modify access to the
             snmpNotifyTable is not required.
             Support of the values notInService(2), notReady(3),
             createAndGo(4), createAndWait(5), and destroy(6) is
             not required."
    ::= { snmpNotifyCompliances 1 }

snmpNotifyBasicFiltersCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for SNMP entities which implement
         SNMP Unconfirmed-Class notifications with filtering, and
         read-create operations on all related tables."
    MODULE SNMP-TARGET-MIB
        MANDATORY-GROUPS { snmpTargetBasicGroup }
    MODULE -- This Module
        MANDATORY-GROUPS { snmpNotifyGroup,
                           snmpNotifyFilterGroup }
    ::= { snmpNotifyCompliances 2 }

snmpNotifyFullCompliance MODULE-COMPLIANCE
    STATUS      current
    DESCRIPTION
        "The compliance statement for SNMP entities which either
         implement only SNMP Confirmed-Class notifications, or both
         SNMP Unconfirmed-Class and Confirmed-Class notifications,
         plus filtering and read-create operations on all related
         tables."
    MODULE SNMP-TARGET-MIB
        MANDATORY-GROUPS { snmpTargetBasicGroup,
                           snmpTargetResponseGroup }
    MODULE -- This Module
        MANDATORY-GROUPS { snmpNotifyGroup,
                           snmpNotifyFilterGroup }
    ::= { snmpNotifyCompliances 3 }

snmpNotifyGroup OBJECT-GROUP
    OBJECTS {
        snmpNotifyTag,
        snmpNotifyType,
        snmpNotifyStorageType,
        snmpNotifyRowStatus
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects for selecting which management

         targets are used for generating notifications, and the
         type of notification to be generated for each selected
         management target."
    ::= { snmpNotifyGroups 1 }

snmpNotifyFilterGroup OBJECT-GROUP
    OBJECTS {
        snmpNotifyFilterProfileName,
        snmpNotifyFilterProfileStorType,
        snmpNotifyFilterProfileRowStatus,
        snmpNotifyFilterMask,
        snmpNotifyFilterType,
        snmpNotifyFilterStorageType,
        snmpNotifyFilterRowStatus
    }
    STATUS      current
    DESCRIPTION
        "A collection of objects providing remote configuration
         of notification filters."
    ::= { snmpNotifyGroups 2 }

END
