APPN-TRAP-MIB DEFINITIONS ::= BEGIN

IMPORTS

        Counter32, OBJECT-TYPE, MODULE-IDENTITY,
        NOTIFICATION-TYPE
                FROM SNMPv2-SMI

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

        appnMIB, appnIsInP2SFmdPius, appnIsInS2PFmdPius,
        appnIsInP2SNonFmdPius, appnIsInS2PNonFmdPius,
        appnIsInP2SFmdBytes, appnIsInS2PFmdBytes,
        appnIsInP2SNonFmdBytes, appnIsInS2PNonFmdBytes,
        appnIsInSessUpTime, appnObjects,
        appnLocalTgOperational, appnLocalTgCpCpSession,
        appnPortOperState, appnLsOperState,
        appnCompliances, appnGroups
                 FROM APPN-MIB

        dlurDlusSessnStatus
                 FROM APPN-DLUR-MIB;

appnTrapMIB MODULE-IDENTITY
        LAST-UPDATED  "9808310000Z" -- August 31, 1998
        ORGANIZATION  "IETF SNA NAU MIB WG / AIW APPN MIBs SIG"
        CONTACT-INFO

                "
                        Bob Clouston
                        Cisco Systems
                        7025 Kit Creek Road
                        P.O. Box 14987
                        Research Triangle Park, NC 27709, USA
                        Tel:    1 919 472 2333
                        E-mail: clouston@cisco.com

                        Bob Moore
                        IBM Corporation
                        4205 S. Miami Boulevard
                        BRQA/501
                        P.O. Box 12195
                        Research Triangle Park, NC 27709, USA
                        Tel:    1 919 254 4436
                        E-mail: remoore@us.ibm.com
                "
      DESCRIPTION
                "This MIB module defines notifications to be generated by
                network devices with APPN capabilities.  It presupposes
                support for the APPN MIB.  It also presupposes
                support for the DLUR MIB for implementations
                that support the DLUR-related groups."
::= { appnMIB 0 }

-- *********************************************************************
-- Notifications
-- *********************************************************************

appnIsrAccountingDataTrap NOTIFICATION-TYPE
      OBJECTS  {
                appnIsInP2SFmdPius,
                appnIsInS2PFmdPius,
                appnIsInP2SNonFmdPius,
                appnIsInS2PNonFmdPius,
                appnIsInP2SFmdBytes,
                appnIsInS2PFmdBytes,
                appnIsInP2SNonFmdBytes,
                appnIsInS2PNonFmdBytes,
                appnIsInSessUpTime
               }
      STATUS current
      DESCRIPTION
          "When it has been enabled, this notification is generated by an
          APPN node whenever an ISR session passing through the node is
          taken down, regardless of whether the session went down
          normally or abnormally.  Its purpose is to allow a management
          application (primarily an accounting application) that is
          monitoring the ISR counts to receive the final values of these
          counts, so that the application can properly account for the
          amounts the counts were incremented since the last time the
          application polled them.  The appnIsInSessUpTime object
          provides the total amount of time that the session was active.

          This notification is not a substitute for polling the ISR
          counts.  In particular, the count values reported in this
          notification cannot be assumed to be the complete totals for
          the life of the session, since they may have wrapped while the
          session was up.

          The session to which the objects in this notification apply is
          identified by the fully qualified CP name and PCID that make up
          the table index.  An instance of this notification will contain
          exactly one instance of each of its objects, and these objects
          will all belong to the same conceptual row of the
          appnIsInTable.

          Generation of this notification is controlled by the same
          object in the APPN MIB, appnIsInGlobeCtrAdminStatus, that
          controls whether the count objects themselves are being
          incremented."
      ::= { appnTrapMIB 1 }

appnLocalTgOperStateChangeTrap NOTIFICATION-TYPE
      OBJECTS  {
                appnLocalTgTableChanges,
                appnLocalTgOperational
               }
      STATUS current
      DESCRIPTION
          "When it has been enabled, this notification makes it possible
          for an APPN topology application to get asynchronous
          notifications of local TG operational state changes,
          and thus to reduce the frequency with which it polls
          for these changes.

          This notification is sent whenever there is a change to
          the appnLocalTgOperational object in a row of the
          appnLocalTgTable.  This notification is only sent for row
          creation if the row is created with a value of 'true' for
          appnLocalTgOperational.  This notification is only sent for
          row deletion if the last value of appnLocalTgOperational was
          'true'.  In this case, the value of appnLocalTgOperational
          in the notification shall be 'false', since the deletion of
          a row indicates that the TG is no longer operational.

          The notification is more than a simple 'poll me now' indication.
          It carries both a count of local TG topology changes, and the
          current operational state itself.  The count of changes allows an
          application to detect lost notifications, either when polling
          or upon receiving a subsequent notification, at which point it
          knows it must retrieve the entire appnLocalTgTable again.
          This is the same count as used in the appnLocalCpCpStateChangeTrap.
          A lost notification could indicate a local TG CP-CP session state
          change or an operational state change.

          Generation of this notification is controlled by the
          appnTrapControl object."

      ::= { appnTrapMIB 2 }

appnLocalTgCpCpChangeTrap NOTIFICATION-TYPE
      OBJECTS  {
                appnLocalTgTableChanges,
                appnLocalTgCpCpSession
               }
      STATUS current
      DESCRIPTION
          "When it has been enabled, this notification makes it possible
          for an APPN topology application to get asynchronous
          notifications of local TG control-point to control-point (CP-CP)
          session state changes, and thus to reduce the
          frequency with which it polls for these changes.

          This notification is sent whenever there is a change to
          the appnLocalTgCpCpSession object but NOT the
          appnLocalTgOperational object in a row of the appnLocalTgTable.
          This notification is never sent for appnLocalTgTable row
          creation or deletion.

          The notification is more than a simple 'poll me now' indication.
          It carries both a count of local TG topology changes, and the
          current CP-CP session state itself.  The count of changes allows
          an application to detect lost notifications, either when polling
          or upon receiving a subsequent notification, at which point it
          knows it must retrieve the entire appnLocalTgTable again.  This
          is the same count as used in the appnLocalTgOperStateChangeTrap.
          A lost notification could indicate a local TG CP-CP session
          state change or an operational state change.

          Generation of this notification is controlled by the
          appnTrapControl object."

      ::= { appnTrapMIB 3 }

appnPortOperStateChangeTrap NOTIFICATION-TYPE
      OBJECTS  {
                appnPortTableChanges,
                appnPortOperState
               }

      STATUS current
      DESCRIPTION
          "When it has been enabled, this notification makes it possible
          for an APPN topology application to get asynchronous
          notifications of port operational state changes, and thus to
          reduce the frequency with which it polls for these changes.
          This notification is only sent when a appnPortOperState has
          transitioned to a value of 'active' or 'inactive'.

          This notification is sent whenever there is a appnPortOperState
          object transition to 'inactive' or 'active' state in the
          appnPortTable.  This notification is only sent for row creation
          if the row is created with a value of 'active' for
          appnPortOperState.  This notification is only sent for
          row deletion if the last value of appnPortOperState was
          'active'.  In this case, the value of appnPortOperState
          in the notification shall be 'inactive', since the deletion of
          a row indicates that the port is no longer active.

          The notification is more than a simple 'poll me now' indication.
          It carries both a count of port table changes, and the
          operational state itself.  The count of changes allows an
          application to detect lost notifications, either when polling
          or upon receiving a subsequent notification, at which point
          it knows it must retrieve the entire appnPortTable again.

          Generation of this notification is controlled by the
          appnTrapControl object."

      ::= { appnTrapMIB 4 }

appnLsOperStateChangeTrap NOTIFICATION-TYPE
      OBJECTS  {
                appnLsTableChanges,
                appnLsOperState
               }
      STATUS current
      DESCRIPTION
          "When it has been enabled, this notification makes it possible
          for an APPN topology application to get asynchronous
          notifications of link station operational state changes, and
          thus to reduce the frequency with which it polls for these
          changes.  This notification is only sent when a appnLsOperState
          has transitioned to a value of 'active' or 'inactive'.

          This notification is sent whenever there is a appnLsOperState
          object transition to 'inactive' or 'active' state in the
          appnLsTable.  This notification is only sent for row creation
          if the row is created with a value of 'active' for
          appnLsOperState.  This notification is only sent for
          row deletion if the last value of appnLsOperState was
          'active'.  In this case, the value of appnLsOperState
          in the notification shall be 'inactive', since the deletion of
          a row indicates that the link station is no longer active.

          The notification is more than a simple 'poll me now' indication.
          It carries both a count of link station table changes, and the
          operational state itself.  The count of changes allows an
          application to detect lost notifications, either when polling
          or upon receiving a subsequent notification, at which point it
          knows it must retrieve the entire appnLsTable again.

          Generation of this notification is controlled by the
          appnTrapControl object."
      ::= { appnTrapMIB 5 }

dlurDlusStateChangeTrap NOTIFICATION-TYPE
      OBJECTS  {
                dlurDlusTableChanges,
                dlurDlusSessnStatus
               }
      STATUS current
      DESCRIPTION
          "When it has been enabled, this notification makes it possible
          for an APPN topology application to get asynchronous
          notifications of DLUR-DLUS session changes, and thus to reduce
          the frequency with which it polls for these changes.

          This notification is sent whenever there is a dlurDlusSessnStatus
          object transition to 'inactive' or 'active' state in the
          dlurDlusTable.  This notification is only sent for row creation
          if the row is created with a value of 'active' for
          dlurDlusSessnStatus.  This notification is only sent for
          row deletion if the last value of dlurDlusSessnStatus was
          'active'.  In this case, the value of dlurDlusSessnStatus
          in the notification shall be 'inactive', since the deletion of
          a row indicates that the session is no longer active.

          The notification is more than a simple 'poll me now' indication.
          It carries both a count of DLUR-DLUS table changes, and the
          session status itself.  The count of changes allows an
          application to detect lost notifications, either when polling
          or upon receiving a subsequent notification, at which point it
          knows it must retrieve the entire dlurDlusTable again.

          Generation of this notification is controlled by the
          appnTrapControl object."

      ::= { appnTrapMIB 6 }

-- *********************************************************************
-- Supporting Objects
-- *********************************************************************

appnTrapObjects              OBJECT IDENTIFIER ::= { appnObjects 7 }

appnTrapControl OBJECT-TYPE

      SYNTAX BITS {
                   appnLocalTgOperStateChangeTrap(0),
                   appnLocalTgCpCpChangeTrap(1),
                   appnPortOperStateChangeTrap(2),
                   appnLsOperStateChangeTrap(3),
                   dlurDlusStateChangeTrap(4)
                   -- add other notification types here
                  }
      MAX-ACCESS read-write
      STATUS current
      DESCRIPTION
          "An object to turn APPN notification generation on and off.
          Setting a notification type's bit to 1 enables generation of
          notifications of that type, subject to further filtering
          resulting from entries in the snmpNotificationMIB.  Setting
          this bit to 0 disables generation of notifications of that
          type.

          Note that generation of the appnIsrAccountingDataTrap is
          controlled by the appnIsInGlobeCtrAdminStatus object in
          the APPN MIB:  if counts of intermediate session traffic
          are being kept at all, then the notification is also enabled."

      ::= { appnTrapObjects 1 }

appnLocalTgTableChanges OBJECT-TYPE
      SYNTAX Counter32
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
          "A count of the number of times a row in the appnLocalTgTable
          has changed status since the APPN node was last reinitialized.
          This counter is incremented whenever a condition is detected
          that would cause a appnLocalTgOperStateChangeTrap or
          appnLocalTgCpCpChangeTrap notification to be sent, whether
          or not those notifications are enabled."

      ::= { appnTrapObjects 2 }

appnPortTableChanges OBJECT-TYPE
      SYNTAX Counter32
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
          "A count of the number of times a row in the appnPortTable
          has changed status since the APPN node was last reinitialized.
          This counter is incremented whenever a condition is detected
          that would cause a appnPortOperStateChangeTrap notification
          to be sent, whether or not this notification is enabled."

      ::= { appnTrapObjects 3 }

appnLsTableChanges OBJECT-TYPE
      SYNTAX Counter32
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
          "A count of the number of times a row in the appnLsTable
          has changed status since the APPN node was last reinitialized.
          This counter is incremented whenever a condition is detected
          that would cause a appnLsOperStateChangeTrap notification
          to be sent, whether or not this notification is enabled."

      ::= { appnTrapObjects 4 }

dlurDlusTableChanges OBJECT-TYPE
      SYNTAX Counter32
      MAX-ACCESS read-only
      STATUS current
      DESCRIPTION
          "A count of the number of times a row in the dlurDlusTable
          has changed status since the APPN node was last reinitialized.
          This counter is incremented whenever a condition is detected
          that would cause a dlurDlusStateChangeTrap notification
          to be sent, whether or not this notification is enabled."

      ::= { appnTrapObjects 5 }

-- *********************************************************************
-- Conformance information
-- *********************************************************************

-- Tie into the conformance structure in the APPN MIB:
-- appnConformance       OBJECT IDENTIFIER ::= {appnMIB 3 }
--
-- appnCompliances       OBJECT IDENTIFIER ::= {appnConformance 1 }
-- appnGroups            OBJECT IDENTIFIER ::= {appnConformance 2 }

-- Compliance statement
appnTrapMibCompliance  MODULE-COMPLIANCE
       STATUS  current
       DESCRIPTION
           "The compliance statement for the SNMP entities that
           implement the APPN-TRAP-MIB."

       MODULE  -- this module

--     Conditionally mandatory groups
           GROUP appnTrapMibIsrNotifGroup
           DESCRIPTION
               "This group is mandatory for APPN nodes supporting
               reporting of final ISR counter values via notifications."

           GROUP appnTrapMibTopoConfGroup
           DESCRIPTION
               "This group is mandatory for APPN nodes supporting
               polling reduction for local topology."

           GROUP appnTrapMibTopoNotifGroup
           DESCRIPTION
               "This group is mandatory for APPN nodes supporting
               polling reduction for local topology."

           GROUP appnTrapMibDlurConfGroup
           DESCRIPTION
               "This group is mandatory for APPN nodes supporting
               polling reduction for the dlurDlusTable."

           GROUP appnTrapMibDlurNotifGroup
           DESCRIPTION
               "This group is mandatory for APPN nodes supporting
               polling reduction for the dlurDlusTable."

           OBJECT appnTrapControl
               MIN-ACCESS  read-only
               DESCRIPTION
                   "An agent is not required to support a set to
                   this object."

       ::= {appnCompliances 2 }

-- Units of conformance
appnTrapMibIsrNotifGroup    NOTIFICATION-GROUP
        NOTIFICATIONS {
                       appnIsrAccountingDataTrap
                      }
        STATUS  current
        DESCRIPTION
            "A notification for reporting the final values of the
            APPN MIB's ISR counters."

        ::= { appnGroups 21 }

appnTrapMibTopoConfGroup  OBJECT-GROUP
        OBJECTS  {
                  appnTrapControl,
                  appnLocalTgTableChanges,
                  appnPortTableChanges,
                  appnLsTableChanges
                 }
        STATUS  current
        DESCRIPTION
            "A collection of objects for reducing the polling
            associated with the local topology tables in the
            APPN MIB.  Nodes that implement this group SHALL
            also implement the appnTrapMibTopoNotifGroup."

        ::= { appnGroups 22 }

appnTrapMibTopoNotifGroup    NOTIFICATION-GROUP
        NOTIFICATIONS {
                       appnLocalTgOperStateChangeTrap,
                       appnLocalTgCpCpChangeTrap,
                       appnPortOperStateChangeTrap,
                       appnLsOperStateChangeTrap

                      }
        STATUS  current
        DESCRIPTION
            "A collection of notifications for reducing the polling
            associated with the local topology tables in the
            APPN MIB.  Nodes that implement this group SHALL
            also implement the appnTrapMibTopoConfGroup."

        ::= { appnGroups 23 }

appnTrapMibDlurConfGroup  OBJECT-GROUP
        OBJECTS  {
                  appnTrapControl,
                  dlurDlusTableChanges
                 }
        STATUS  current
        DESCRIPTION
            "A collection of objects for reducing the polling
            associated with the dlurDlusTable in the DLUR
            MIB.  Nodes that implement this group SHALL also
            implement the appnTrapMibDlurNotifGroup."

        ::= { appnGroups 24 }

appnTrapMibDlurNotifGroup    NOTIFICATION-GROUP
        NOTIFICATIONS {
                       dlurDlusStateChangeTrap
                      }
        STATUS  current
        DESCRIPTION
            "A notification for reducing the polling associated
            with the dlurDlusTable in the DLUR MIB.  Nodes that
            implement this group SHALL also implement the
            appnTrapMibDlurConfGroup."

        ::= { appnGroups 25 }

END
