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
