   SNMPv2-M2M-MIB DEFINITIONS ::= BEGIN

   IMPORTS
       MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
       Integer32, Counter32, snmpModules
           FROM SNMPv2-SMI
       DisplayString, InstancePointer, RowStatus, TimeStamp
           FROM SNMPv2-TC
       MODULE-COMPLIANCE, OBJECT-GROUP
           FROM SNMPv2-CONF
       contextIdentity
           FROM SNMPv2-PARTY-MIB;

   snmpM2M MODULE-IDENTITY
       LAST-UPDATED "9304010000Z"
       ORGANIZATION "IETF SNMPv2 Working Group"
       CONTACT-INFO
               "        Steven Waldbusser

                Postal: Carnegie Mellon University
                        4910 Forbes Ave
                        Pittsburgh, PA  15213

                   Tel: +1 412 268 6628
                   Fax: +1 412 268 4987

                E-mail: waldbusser@cmu.edu"
       DESCRIPTION
               "The Manager-to-Manager MIB module."
       ::= { snmpModules 2 }

   snmpM2MObjects OBJECT IDENTIFIER ::= { snmpM2M 1 }

   -- the alarm group
   --
   -- a collection of objects allowing the description and
   -- configuration of threshold alarms from a SNMPv2 entity
   -- acting in a dual role.

   snmpAlarm      OBJECT IDENTIFIER ::= { snmpM2MObjects 1 }

   -- This Alarm mechanism periodically takes statistical samples
   -- from variables available via SNMPv2 and compares them to
   -- thresholds that have been configured.  The alarm table
   -- stores configuration entries that each define a variable,
   -- polling period, and threshold parameters.  If a sample is
   -- found to cross the threshold values, an event is generated.
   -- Only variables that resolve to an ASN.1 primitive type of
   -- INTEGER (Integer32, Counter32, Gauge32, TimeTicks,
   -- Counter64, or UInteger32) may be monitored in this way.
   --
   -- This function has a hysteresis mechanism to limit the
   -- generation of events.  This mechanism generates one event
   -- as a threshold is crossed in the appropriate direction.  No
   -- more events are generated for that threshold until the
   -- opposite threshold is crossed.
   --
   -- In the case of sampling a deltaValue, an entity may
   -- implement this mechanism with more precision if it takes a
   -- delta sample twice per period, each time comparing the sum
   -- of the latest two samples to the threshold.  This allows
   -- the detection of threshold crossings that span the sampling
   -- boundary.  Note that this does not require any special
   -- configuration of the threshold value.  It is suggested that
   -- entities implement this more precise algorithm.
   --

   snmpAlarmNextIndex OBJECT-TYPE
       SYNTAX     INTEGER (0..65535)
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "The index number of the next appropriate
               unassigned entry in the snmpAlarmTable.  The value
               0 indicates that no unassigned entries are
               available.

               A management station should create new entries in
               the snmpAlarmTable using this algorithm: first,
               issue a management protocol retrieval operation to
               determine the value of snmpAlarmNextIndex; and,
               second, issue a management protocol set operation
               to create an instance of the snmpAlarmStatus
               object setting its value to `createAndGo' or
               `createAndWait' (as specified in the description
               of the RowStatus textual convention)."
       ::= { snmpAlarm 1 }

   snmpAlarmTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF SnmpAlarmEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "A list of snmpAlarm entries."
       ::= { snmpAlarm 2 }

   snmpAlarmEntry OBJECT-TYPE
       SYNTAX     SnmpAlarmEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "A list of parameters that set up a periodic
               sampling query to check for alarm conditions.  The
               contextIdentity included in the INDEX clause is
               the context to which the sampling queries are
               directed."
       INDEX      { contextIdentity, snmpAlarmIndex }
       ::= { snmpAlarmTable 1 }

   SnmpAlarmEntry ::= SEQUENCE {
       snmpAlarmIndex                    INTEGER,
       snmpAlarmVariable                 InstancePointer,
       snmpAlarmInterval                 Integer32,
       snmpAlarmSampleType               INTEGER,
       snmpAlarmValue                    Integer32,
       snmpAlarmStartupAlarm             INTEGER,
       snmpAlarmRisingThreshold          Integer32,
       snmpAlarmFallingThreshold         Integer32,
       snmpAlarmRisingEventIndex         INTEGER,
       snmpAlarmFallingEventIndex        INTEGER,
       snmpAlarmUnavailableEventIndex    INTEGER,
       snmpAlarmStatus                   RowStatus
   }

   snmpAlarmIndex OBJECT-TYPE
       SYNTAX     INTEGER (1..65535)
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "An index that uniquely identifies an entry in the
               snmpAlarm table for a particular sampling context.
               Each such entry defines a diagnostic sample at a
               particular interval for a variable in the
               particular context's object resources."
       ::= { snmpAlarmEntry 1 }

   snmpAlarmVariable OBJECT-TYPE
       SYNTAX     InstancePointer
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The object identifier of the particular variable
               to be sampled.  Only variables that resolve to an
               ASN.1 primitive type of INTEGER (Integer32,
               Counter32, Gauge32, TimeTicks, Counter64, or
               UInteger32) may be sampled.

               If it is detected by an error response of
               authorizationError, noSuchObject, or
               noSuchInstance that the variable name of an
               established snmpAlarmEntry is no longer available
               in the sampling context, a single
               snmpObjectUnavailableAlarm event is generated and
               the status of this snmpAlarmEntry is set to
               `destroy'.  Likewise, if the syntax of the
               variable retrieved by the query is not Integer32,
               Counter32, Gauge32, TimeTicks, Counter64, or
               UInteger32, the same actions will be taken.

               If the SNMPv2 entity acting in a dual role detects
               that the sampled value can not be obtained due to
               lack of response to management queries, it should
               either:

                    1) Set the status of this snmpAlarmEntry to
                    `destroy', if it is determined that further
                    communication is not possible;

                    or,

                    2) Delete the associated snmpAlarmValue
                    instance (but not the entire conceptual row),
                    and continue to attempt to sample the
                    variable and recreate the associated
                    snmpAlarmValue instance should communication
                    be reestablished.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       ::= { snmpAlarmEntry 2 }

   snmpAlarmInterval OBJECT-TYPE
       SYNTAX     Integer32
       UNITS      "seconds"
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The interval in seconds over which the data is
               sampled and compared with the rising and falling
               thresholds.  When setting this object and the
               sampling type is `deltaValue',  care should be
               taken to ensure that the change during this
               interval of the variable being sampled will not
               exceed the (-2^31...2^31-1) range of the
               snmpAlarmValue.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       ::= { snmpAlarmEntry 3 }

   snmpAlarmSampleType OBJECT-TYPE
       SYNTAX     INTEGER {
                      absoluteValue(1),
                      deltaValue(2)
                  }
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The method of sampling the selected variable and
               calculating the value to be compared against the
               thresholds.  If the value of this object is
               `absoluteValue', the value of the selected
               variable at the end of the sampling interval will
               be compared directly with both the
               snmpAlarmRisingThreshold and the
               snmpAlarmFallingThreshold values.  If the value of
               this object is `deltaValue', the value of the
               selected variable at the end of the sampling
               interval will be subtracted from its value at the
               end of the previous sampling interval, and the
               difference compared with both the
               snmpAlarmRisingThreshold and the
               snmpAlarmFallingThreshold values.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       DEFVAL { deltaValue }
       ::= { snmpAlarmEntry 4 }

   snmpAlarmValue OBJECT-TYPE
       SYNTAX     Integer32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "The value of the statistic during the last
               sampling period.  The value during the current
               sampling period is not made available until the
               period is completed.  If the value of the
               statistic does not fit in the signed 32 bit
               representation of this object, it should be
               truncated in an implementation specific manner.

               Note that if the associated snmpAlarmSampleType is
               set to `deltaValue', the value of this object is
               the difference in the sampled variable since the
               last sample.

               This object will be created by the SNMPv2 entity
               acting in a dual role when this entry is set to
               `active', and the first sampling period has
               completed.  It may be created and deleted at other
               times by the SNMPv2 entity acting in a dual role
               when the sampled value can not be obtained, as
               specified in the snmpAlarmVariable object."
       ::= { snmpAlarmEntry 5 }

   snmpAlarmStartupAlarm OBJECT-TYPE
       SYNTAX     INTEGER {
                      risingAlarm(1),
                      fallingAlarm(2),
                      risingOrFallingAlarm(3)
                  }
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The alarm that may be sent when this entry is
               first set to `active'.  If the first sample after
               this entry becomes active is greater than or equal
               to the risingThreshold and snmpAlarmStartupAlarm
               is equal to `risingAlarm' or
               `risingOrFallingAlarm', then a single rising alarm
               will be generated.  If the first sample after this
               entry becomes active is less than or equal to the
               fallingThreshold and snmpAlarmStartupAlarm is
               equal to `fallingAlarm' or `risingOrFallingAlarm',
               then a single falling alarm will be generated.
               Note that a snmpObjectUnavailableAlarm is sent
               upon startup whenever it is applicable,
               independent of the setting of
               snmpAlarmStartupAlarm.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       DEFVAL { risingOrFallingAlarm }
       ::= { snmpAlarmEntry 6 }

   snmpAlarmRisingThreshold OBJECT-TYPE
       SYNTAX     Integer32
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "A threshold for the sampled statistic.  When the
               current sampled value is greater than or equal to
               this threshold, and the value at the last sampling
               interval was less than this threshold, a single
               event will be generated.  A single event will also
               be generated if the first sample after this entry
               becomes active is greater than or equal to this
               threshold and the associated snmpAlarmStartupAlarm
               is equal to `risingAlarm' or
               `risingOrFallingAlarm'.

               After a rising event is generated, another such
               event will not be generated until the sampled
               value falls below this threshold and reaches the
               snmpAlarmFallingThreshold.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       ::= { snmpAlarmEntry 7 }

   snmpAlarmFallingThreshold OBJECT-TYPE
       SYNTAX     Integer32
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "A threshold for the sampled statistic.  When the
               current sampled value is less than or equal to
               this threshold, and the value at the last sampling
               interval was greater than this threshold, a single
               event will be generated.  A single event will also
               be generated if the first sample after this entry
               becomes active is less than or equal to this
               threshold and the associated snmpAlarmStartupAlarm
               is equal to `fallingAlarm' or
               `risingOrFallingAlarm'.

               After a falling event is generated, another such
               event will not be generated until the sampled
               value rises above this threshold and reaches the
               snmpAlarmRisingThreshold.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       ::= { snmpAlarmEntry 8 }

   snmpAlarmRisingEventIndex OBJECT-TYPE
       SYNTAX     INTEGER (0..65535)
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The index of the snmpEventEntry that is used when
               a rising threshold is crossed.  The snmpEventEntry
               identified by a particular value of this index is
               the same as identified by the same value of the
               snmpEventIndex object.  If there is no
               corresponding entry in the snmpEventTable, then no
               association exists.  In particular, if this value
               is zero, no associated event will be generated, as
               zero is not a valid snmpEventIndex.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       ::= { snmpAlarmEntry 9 }

   snmpAlarmFallingEventIndex OBJECT-TYPE
       SYNTAX     INTEGER (0..65535)
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The index of the snmpEventEntry that is used when
               a falling threshold is crossed.  The
               snmpEventEntry identified by a particular value of
               this index is the same as identified by the same
               value of the snmpEventIndex object.  If there is
               no corresponding entry in the snmpEventTable, then
               no association exists.  In particular, if this
               value is zero, no associated event will be
               generated, as zero is not a valid snmpEventIndex.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       ::= { snmpAlarmEntry 10 }

   snmpAlarmUnavailableEventIndex OBJECT-TYPE
       SYNTAX     INTEGER (0..65535)
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The index of the snmpEventEntry that is used when
               a variable becomes unavailable.  The
               snmpEventEntry identified by a particular value of
               this index is the same as identified by the same
               value of the snmpEventIndex object.  If there is
               no corresponding entry in the snmpEventTable, then
               no association exists.  In particular, if this
               value is zero, no associated event will be
               generated, as zero is not a valid snmpEventIndex.

               An attempt to modify this object will fail with an
               `inconsistentValue' error if the associated
               snmpAlarmStatus object would be equal to `active'
               both before and after the modification attempt."
       ::= { snmpAlarmEntry 11 }

   snmpAlarmStatus OBJECT-TYPE
       SYNTAX     RowStatus
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The status of this snmpAlarm entry.  This object
               may not be set to `active' unless the following
               columnar objects exist in this row:
               snmpAlarmVariable, snmpAlarmInterval,
               snmpAlarmSampleType, snmpAlarmStartupAlarm,
               snmpAlarmRisingThreshold,
               snmpAlarmFallingThreshold,
               snmpAlarmRisingEventIndex,
               snmpAlarmFallingEventIndex, and
               snmpAlarmUnavailableEventIndex."
       ::= { snmpAlarmEntry 12 }

   -- alarm-related notifications

   snmpAlarmNotifications
                  OBJECT IDENTIFIER ::= { snmpAlarm 3 }

   snmpRisingAlarm NOTIFICATION-TYPE
       OBJECTS { snmpAlarmVariable, snmpAlarmSampleType,
                 snmpAlarmValue, snmpAlarmRisingThreshold }
       STATUS  current
       DESCRIPTION
               "An event that is generated when an alarm entry
               crosses its rising threshold.  The instances of
               those objects contained within the varbind list
               are those of the alarm entry which generated this
               event."
       ::= { snmpAlarmNotifications 1 }

   snmpFallingAlarm NOTIFICATION-TYPE
       OBJECTS { snmpAlarmVariable, snmpAlarmSampleType,
                 snmpAlarmValue, snmpAlarmFallingThreshold }
       STATUS  current
       DESCRIPTION
               "An event that is generated when an alarm entry
               crosses its falling threshold.  The instances of
               those objects contained within the varbind list
               are those of the alarm entry which generated this
               event."
       ::= { snmpAlarmNotifications 2 }

   snmpObjectUnavailableAlarm NOTIFICATION-TYPE
       OBJECTS { snmpAlarmVariable }
       STATUS  current
       DESCRIPTION
               "An event that is generated when a variable
               monitored by an alarm entry becomes unavailable.
               The instance of snmpAlarmVariable contained within
               the varbind list is the one associated with the
               alarm entry which generated this event."
       ::= { snmpAlarmNotifications 3 }

   -- the event group
   --
   -- a collection of objects allowing the description and
   -- configuration of events from a SNMPv2 entity acting
   -- in a dual role.

   snmpEvent      OBJECT IDENTIFIER ::= { snmpM2MObjects 2 }

   -- The snmpEvent table defines the set of events generated on
   -- a SNMPv2 entity acting in a dual role.  Each entry in the
   -- snmpEventTable associates an event type with the
   -- notification method and associated parameters.  Some
   -- snmpEvent entries are fired by an associated condition in
   -- the snmpAlarmTable.  Others are fired on behalf of
   -- conditions defined in the NOTIFICATION-TYPE macro.  The
   -- snmpNotificationTable defines notifications that should
   -- occur when an associated event is fired.

   snmpEventNextIndex OBJECT-TYPE
       SYNTAX     INTEGER (0..65535)
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "The index number of the next appropriate
               unassigned entry in the snmpEventTable.  The value
               0 indicates that no unassigned entries are
               available.

               A management station should create new entries in
               the snmpEventTable using this algorithm: first,
               issue a management protocol retrieval operation to
               determine the value of snmpEventNextIndex; and,
               second, issue a management protocol set operation
               to create an instance of the snmpEventStatus
               object setting its value to `createAndWait' or
               'createAndGo'."
       ::= { snmpEvent 1 }

   snmpEventTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF SnmpEventEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "A list of events."
       ::= { snmpEvent 2 }

   snmpEventEntry OBJECT-TYPE
       SYNTAX     SnmpEventEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "A set of parameters that describe an event that
               is generated when certain conditions are met."
       INDEX      { snmpEventIndex }
       ::= { snmpEventTable 1 }

   SnmpEventEntry ::= SEQUENCE {
       snmpEventIndex          INTEGER,
       snmpEventID             OBJECT IDENTIFIER,
       snmpEventDescription    DisplayString,
       snmpEventEvents         Counter32,
       snmpEventLastTimeSent   TimeStamp,
       snmpEventStatus         RowStatus
   }

   snmpEventIndex OBJECT-TYPE
       SYNTAX     INTEGER (1..65535)
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "An index that uniquely identifies an entry in the
               snmpEvent table.  Each such entry defines an event
               generated when the appropriate conditions occur."
       ::= { snmpEventEntry 1 }

   snmpEventID OBJECT-TYPE
       SYNTAX     OBJECT IDENTIFIER
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The authoritative identification of the event
               type generated by this entry.  This variable
               occurs as the second varbind of an InformRequest-
               PDU.  If this OBJECT IDENTIFIER maps to a
               NOTIFICATION-TYPE the sender will place the
               objects listed in the NOTIFICATION-TYPE in the
               varbind list."
       ::= { snmpEventEntry 2 }

   snmpEventDescription OBJECT-TYPE
       SYNTAX     DisplayString (SIZE (0..127))
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "A comment describing this snmpEvent entry."
       ::= { snmpEventEntry 3 }

   snmpEventEvents OBJECT-TYPE
       SYNTAX     Counter32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "The number of events caused by event generators
               associated with this snmpEvent entry."
       ::= { snmpEventEntry 4 }

   snmpEventLastTimeSent OBJECT-TYPE
       SYNTAX     TimeStamp
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "The value of sysUpTime at the time this snmpEvent
               entry last generated an event.  If this entry has
               not generated any events, this value will be
               zero."
       DEFVAL { 0 }
       ::= { snmpEventEntry 5 }

   snmpEventStatus OBJECT-TYPE
       SYNTAX     RowStatus
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The status of this snmpEvent entry.  This object
               may not be set to `active' unless the following
               columnar objects exist in this row: snmpEventID,
               snmpEventDescription, snmpEventEvents, and
               snmpEventLastTimeSent.

               Setting an instance of this object to the value
               'destroy' has the effect of invalidating any/all
               entries in the snmpEventTable, and the
               snmpEventNotifyTable which reference the
               corresponding snmpEventEntry."
       ::= { snmpEventEntry 6 }

   snmpEventNotifyMinInterval OBJECT-TYPE
       SYNTAX     Integer32
       UNITS      "seconds"
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "The minimum interval that the SNMPv2 entity
               acting in a dual role will wait before
               retransmitting an InformRequest-PDU.  This object
               specifies the minimal value supported by the
               SNMPv2 entity acting in a dual role, based on
               resource or implementation constraints.

               For a particular entry in the
               snmpEventNotifyTable, if the associated
               snmpEventNotifyIntervalRequested variable is
               greater than this object, the
               snmpEventNotifyIntervalRequested value shall be
               used as the minimum interval for retransmissions
               of InformRequest-PDUs sent on behalf of that
               entry."
       ::= { snmpEvent 3 }

   snmpEventNotifyMaxRetransmissions OBJECT-TYPE
       SYNTAX     Integer32
       MAX-ACCESS read-only
       STATUS     current
       DESCRIPTION
               "The maximum number of time that the SNMPv2 entity
               acting in a dual role will retransmit an
               InformRequest-PDU.  This object specifies the
               maximal value supported by the SNMPv2 entity
               acting in a dual role, based on resource or
               implementation constraints.

               For a particular entry in the
               snmpEventNotifyTable, if the associated
               snmpEventNotifyRetransmissionsRequested variable
               is less than this object, the
               snmpEventNotifyRetransmissionsRequested value
               shall be used as the retransmission count for
               InformRequest-PDUs sent on behalf of that entry."
       ::= { snmpEvent 4 }

   -- The snmpEventNotifyTable is used to configure the
   -- destination and type of notifications sent by a SNMPv2
   -- entity acting in a manager role when a particular event
   -- is triggered.

   snmpEventNotifyTable OBJECT-TYPE
       SYNTAX     SEQUENCE OF SnmpEventNotifyEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "A list of protocol configuration entries for
               event notifications from this entity."
       ::= { snmpEvent 5 }

   snmpEventNotifyEntry OBJECT-TYPE
       SYNTAX     SnmpEventNotifyEntry
       MAX-ACCESS not-accessible
       STATUS     current
       DESCRIPTION
               "A set of parameters that describe the type and
               destination of InformRequest-PDUs sent for a
               particular event.  The snmpEventIndex in this
               entry's INDEX clause identifies the snmpEventEntry
               which, when triggered, will generate a
               notification as configured in this entry.  The
               contextIdentity in this entry's INDEX clause
               identifies the context to which a notification
               will be sent."
       INDEX      { snmpEventIndex, contextIdentity }
       ::= { snmpEventNotifyTable 1 }

   SnmpEventNotifyEntry ::= SEQUENCE {
       snmpEventNotifyIntervalRequested        Integer32,
       snmpEventNotifyRetransmissionsRequested Integer32,
       snmpEventNotifyLifetime                 Integer32,
       snmpEventNotifyStatus                   RowStatus
   }

   snmpEventNotifyIntervalRequested OBJECT-TYPE
       SYNTAX     Integer32
       UNITS      "seconds"
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The requested interval for retransmission of
               Inform PDUs generated on the behalf of this entry.

               This variable will be the actual interval used
               unless the snmpEventNotifyMinInterval is greater
               than this object, in which case the interval shall
               be equal to snmpEventNotifyMinInterval."
       DEFVAL { 30 }
       ::= { snmpEventNotifyEntry 1 }

   snmpEventNotifyRetransmissionsRequested OBJECT-TYPE
       SYNTAX     Integer32
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The requested number of retransmissions of an
               InformRequest-PDU generated on behalf of this
               entry.

               This variable will be the actual number of
               retransmissions used unless the
               snmpEventNotifyMaxRetransmissions is less than
               this object, in which case the retransmission
               count shall be equal to
               snmpEventNotifyMaxRetransmissions."
       DEFVAL { 5 }
       ::= { snmpEventNotifyEntry 2 }

   snmpEventNotifyLifetime OBJECT-TYPE
       SYNTAX     Integer32
       UNITS      "seconds"
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The number of seconds this entry shall live until
               the corresponding instance of
               snmpEventNotifyStatus is set to 'destroy'.  This
               value shall count down to zero, at which time the
               corresponding instance of snmpEventNotifyStatus
               will be set to 'destroy'.  Any management station
               that is using this entry must periodically refresh
               this value to ensure the continued delivery of
               events."
       DEFVAL { 86400 }
       ::= { snmpEventNotifyEntry 3 }

   snmpEventNotifyStatus OBJECT-TYPE
       SYNTAX     RowStatus
       MAX-ACCESS read-create
       STATUS     current
       DESCRIPTION
               "The state of this snmpEventNotifyEntry.  This
               object may not be set to `active' unless the
               following columnar objects exist in this row:
               snmpEventNotifyIntervalRequested,
               snmpEventNotifyRetransmissionsRequested, and
               snmpEventNotifyLifetime."
       ::= { snmpEventNotifyEntry 4 }

   -- conformance information

   snmpM2MConformance
                  OBJECT IDENTIFIER ::= { snmpM2M 2 }

   snmpM2MCompliances
                  OBJECT IDENTIFIER ::= { snmpM2MConformance 1 }
   snmpM2MGroups  OBJECT IDENTIFIER ::= { snmpM2MConformance 2 }

   -- compliance statements

   snmpM2MCompliance MODULE-COMPLIANCE
       STATUS  current
       DESCRIPTION
               "The compliance statement for SNMPv2 entities
               which implement the Manager-to-Manager MIB."
       MODULE  -- this module
           MANDATORY-GROUPS { snmpAlarmGroup, snmpEventGroup }
       ::= { snmpM2MCompliances 1 }

   -- units of conformance

   snmpAlarmGroup OBJECT-GROUP
       OBJECTS { snmpAlarmNextIndex,
                 snmpAlarmVariable, snmpAlarmInterval,
                 snmpAlarmSampleType, snmpAlarmValue,
                 snmpAlarmStartupAlarm, snmpAlarmRisingThreshold,
                 snmpAlarmFallingThreshold,
                 snmpAlarmRisingEventIndex,
                 snmpAlarmFallingEventIndex,
                 snmpAlarmUnavailableEventIndex,
                 snmpAlarmStatus }
       STATUS  current
       DESCRIPTION
               "A collection of objects allowing the description
               and configuration of threshold alarms from a
               SNMPv2 entity acting in a dual role."
       ::= { snmpM2MGroups 1 }

   snmpEventGroup OBJECT-GROUP
       OBJECTS { snmpEventNextIndex,
                 snmpEventID, snmpEventDescription,
                 snmpEventEvents, snmpEventLastTimeSent,
                 snmpEventStatus, snmpEventNotifyMinInterval,
                 snmpEventNotifyMaxRetransmissions,
                 snmpEventNotifyIntervalRequested,
                 snmpEventNotifyRetransmissionsRequested,
                 snmpEventNotifyLifetime, snmpEventNotifyStatus }
       STATUS  current
       DESCRIPTION
               "A collection of objects allowing the description
               and configuration of events from a SNMPv2 entity
               acting in a dual role."
       ::= { snmpM2MGroups 2 }

   END
