CISCO-APS-MIB DEFINITIONS ::= BEGIN

IMPORTS
     MODULE-IDENTITY, NOTIFICATION-TYPE,
     OBJECT-TYPE,
     Gauge32, Counter32, Integer32,
     transmission
       FROM SNMPv2-SMI

     TEXTUAL-CONVENTION, RowStatus,
          TimeStamp
       FROM SNMPv2-TC

     SnmpAdminString
       FROM SNMP-FRAMEWORK-MIB

     InterfaceIndex
       FROM IF-MIB

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

     ciscoExperiment FROM CISCO-SMI;

cApsMIB MODULE-IDENTITY
    LAST-UPDATED    "200112261200Z"
    ORGANIZATION    "Cisco Systems, inc"
    CONTACT-INFO
                    "Cisco Systems, Inc.
                     Customer Service
                     Postal: 170 W. Tasman Drive
                             San Jose, CA  95134-1706
                             USA
                     Tel: +1 800 553-NETS
                     Email: gsr-netman@cisco.com"
    DESCRIPTION
        "This management information module supports the
         configuration and management of SONET linear APS groups.
         The definitions and descriptions used in this mib have 
         been derived from Synchronous Optical Network (SONET)
         Transport Systems: Common Generic Criteria, GR-253-CORE
         Revision 2, January 1999,section 5.3. The MIB is also
         consistent with the Multiplex Section Protection (MSP)
         protocol as specified in ITU-T Recommendation G.783, 
         Characteristics of synchronous digital hierarchy (SDH)
         equipment function blocks, Annex A and B.

         This MIB was extracted from internet draft
         draft-ietf-atommib-sonetaps-mib-05.txt for SONET Linear APS
         architectures, by J. Johnson, M. Thatcher, and J. Kuhfeld.
         "
    REVISION      "200112261200Z"
    DESCRIPTION
         "Latest version of the IETF draft."

    REVISION      "200104290000Z"
    DESCRIPTION
         "A draft version of the APS MIB."
    ::= { ciscoExperiment 71 } 

cApsMIBObjects OBJECT IDENTIFIER
    ::= { cApsMIB 1 }

cApsMIBNotifications OBJECT IDENTIFIER
    ::= { cApsMIB 2 }

cApsMIBConformance OBJECT IDENTIFIER
    ::= { cApsMIB 3 }

CApsK1K2 ::= TEXTUAL-CONVENTION
    STATUS current
    DESCRIPTION
        "This Textual Convention describes an object that stores
         a SONET K1 and K2 byte Aps protocol field. 
         K1 is located in the first octet, K2 is located in
         the second octet. Bits are numbered from left to right,
         with the most significant bit being the leftmost.

         Bits 1-4 of the K1 byte indicate a request.

         1111  Lockout of Protection
         1110  Forced Switch
         1101  SF - High Priority
         1100  SF - Low Priority
         1011  SD - High Priority
         1010  SD - Low Priority
         1001  not used
         1000  Manual Switch
         0111  not used
         0110  Wait-to-Restore
         0101  not used
         0100  Exercise
         0011  not used
         0010  Reverse Request
         0001  Do Not Revert
         0000  No Request

         Bits 5-8 of the K1 byte indicate the channel associated 
         with the request defined in bits 1-4.

         0000 is the Null channel.
         1-14 are working channels.
         15   is the extra traffic channel

         Bits 1-4 of the K2 byte indicate a channel. The channel is
         defined with the same syntax as K1 Bits 5-8. 

         Bit 5 of the K2 byte indicates the
         architecture.

         0 if the architecture is 1+1
         1 if the architecture is 1:n

         Bits 6-8 of the K2 byte indicates the
         mode.

         000 - 011 are reserved for future use
         100  indicates the mode is unidirectional
         101  indicates the mode is bidirectional
         110  RDI-L
         111  AIS-L "
    REFERENCE
        "Bellcore (Telcordia Technologies) GR-253-CORE, 
         Issue 2,Revision 2 (January 1999), 5.3.5."
    SYNTAX      OCTET STRING (SIZE (2))

CApsSwitchCommand ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "An Aps switch command allows a user to perform protection
         switch actions.

         The Switch command values are:

         noCmd

         This value should be returned by a read request when no 
         switch command has been written to the object in question
         since initialization. This value may not be used in a 
         write operation.

         clear

         Clears all of the switch commands listed below for the 
         specified channel.

         lockoutOfProtection

         Prevents any of the working channels from switching to the
         protection line. The specified channel should be the 
         protection channel.

         forcedSwitchWorkToProtect

         Switches the specified working channel to the protection 
         line.

         forcedSwitchProtectToWork

         Switches the working channel back from the protection
         line to the working line. The specified channel should be
         the protection channel.

         manualSwitchWorkToProtect

         Switches the specified working channel to the protection 
         line.

         manualSwitchProtectToWork

         Switches the working channel back from the protection
         line to the working line. The specified channel should be
         the protection channel.

         exercise

         Exercises the protocol for a protection switch of the 
         specified channel by issuing an Exercise request for that
         channel and checking the response on the Aps channel."
    SYNTAX       INTEGER {
                          noCmd(1),
                          clear(2),
                          lockoutOfProtection(3),
                          forcedSwitchWorkToProtect(4),
                          forcedSwitchProtectToWork(5),
                          manualSwitchWorkToProtect(6),
                          manualSwitchProtectToWork(7),
                          exercise(8)
                          }

CApsControlCommand ::= TEXTUAL-CONVENTION
    STATUS       current
    DESCRIPTION
        "An APS control command applies only to LTE that support
         the 1:n architecture and performs the following actions.

         The Control command values are:

         noCmd

         This value should be returned by a read request when no 
         control command has been written to the object in question
         since initialization. This value may not be used in a write
         operation.

         lockoutWorkingChannel

         Prevents the specified working channel from switching to
         the protection line.

         clearLockoutWorkingChannel

         Clears the lockout a working channel command for the 
         channel specified."
    SYNTAX       INTEGER {
                          noCmd(1),
                          lockoutWorkingChannel(2),
                          clearLockoutWorkingChannel(3)
                         }

--
-- APS Configuration Table
--
-- This table supports the addition, configuration and deletion 
-- of groups.
--
cApsConfig   OBJECT IDENTIFIER ::= { cApsMIBObjects 1 }

cApsConfigGroups OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The count of APS groups. This count includes all rows
         in cApsConfigTable."
    ::= { cApsConfig 1 }

 cApsConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF  CApsConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists the APS groups that have been 
         configured on the system."
    ::= { cApsConfig 2 }

 cApsConfigEntry OBJECT-TYPE
    SYNTAX       CApsConfigEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
        "A conceptual row in the  cApsConfigTable."
    INDEX { IMPLIED  cApsConfigName }
    ::= { cApsConfigTable  1 }

 CApsConfigEntry ::= SEQUENCE {
     cApsConfigName                  SnmpAdminString,
     cApsConfigRowStatus             RowStatus,
     cApsConfigMode                  INTEGER,
     cApsConfigRevert                INTEGER,
     cApsConfigDirection             INTEGER,
     cApsConfigExtraTraffic          INTEGER,
     cApsConfigSdBerThreshold        Integer32,
     cApsConfigSfBerThreshold        Integer32,
     cApsConfigWaitToRestore         Integer32,
     cApsConfigCreationTime          TimeStamp
 }

 cApsConfigName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A textual name for the APS group.
        "
    ::= { cApsConfigEntry 1 }

 cApsConfigRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this APS group entry.

         An entry may not exist in the active state unless all
         objects in the entry have an appropriate value. Also,
         all associated  cApsChanConfigEntry rows must 
         represent a set of consecutive channel numbers 
         beginning with 0 or 1, depending on the selected
         architecture.

         When set to notInService changes may be made to
         cApsConfigMode, cApsConfigRevert,  
         cApsConfigDirection,  cApsConfigExtraTraffic,
         cApsConfigSdBerThreshold, cApsConfigSfBerThreshold,
         and  cApsConfigWaitToRestore. Also, associated
         cApsChanConfigTable objects may be added, 
         deleted and modified."
    ::= { cApsConfigEntry 2 }

 cApsConfigMode OBJECT-TYPE
    SYNTAX      INTEGER {
                        onePlusOne(1),
                        oneToN(2),
                        onePlusOneCompatible(3),
                        onePlusOneOptimized(4)
                        }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The architecture of the APS group.

         onePlusOne

         The 1+1 architecture permanently bridges the working
         line to the protection line.

         oneToN

         The 1:n architecture allows one protection channel to
         protect up to n working channels. When a fault is detected
         on one of the n working channels that channel is bridged
         over the protection channel.

         onePlusOneCompatible

         This refers to 1 + 1 bidirectional switching compatible
         with 1:n bidirectional switching as specified in ITU-T
         Recommendation G.783 (04/97) section A.3.4.1. Since this
         mode necessitates bidirectional switching,
         cApsConfigDirection must be set to bidirectional 
         whenever onePlusOneCompatible is set.

         onePlusOneOptimized

         This refers to 1 + 1 bidirectional switching optimized
         for a network using predominantly 1 + 1 bidirectional
         switching as specified in ITU-T Recommendation G.783 
         (04/97) section B.1. Since this mode necessitates 
         bidirectional switching,  cApsConfigDirection must
         be set to bidirectional whenever onePlusOneOptimized 
         is set.

         This object may not be modified if the associated
         cApsConfigRowStatus object is equal to active(1)."
    DEFVAL {onePlusOne}
    ::= { cApsConfigEntry 3 }

 cApsConfigRevert OBJECT-TYPE
    SYNTAX      INTEGER { nonrevertive(1), revertive(2) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The revertive mode of the APS group.

         nonrevertive

         Traffic remains on the protection line until another 
         switch request is received.

         revertive

         When the condition that caused a switch to the 
         protection line has been cleared the signal is switched
         back to the working line. Since switching is revertive
         with the 1:n architecture,  cApsConfigRevert must 
         be set to revertive if cApsConfigMode is set 
         to oneToN.

         Switching may optionally be revertive with the 1+1 
         architecture.

         This object may not be modified if the associated
         cApsConfigRowStatus object is equal to active(1).
         "
    DEFVAL { nonrevertive }
    ::= { cApsConfigEntry 4 }

 cApsConfigDirection OBJECT-TYPE
    SYNTAX      INTEGER { unidirectional(1), bidirectional(2) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The directional mode of the APS group.

         unidirectional

         The unidirectional mode provides protection in one 
         direction.

         bidirectional

         The bidirectional mode provides protection in both
         directions.

         This object may not be modified if the associated
         cApsConfigRowStatus object is equal to active(1)."
    DEFVAL {unidirectional}
    ::= { cApsConfigEntry 5 }

 cApsConfigExtraTraffic OBJECT-TYPE
    SYNTAX      INTEGER { enabled(1), disabled(2) }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object enables or disables the transfer of extra 
         traffic on the protection channel in a 1:n architecture.
         This object must be set to disabled if the architecture
         is 1+1. It may be necessary to disable this in order to
         interwork with other SONET network elements that don't
         support extra traffic.

         This object may not be modified if the associated
         cApsConfigRowStatus object is equal to active(1)."
    DEFVAL { disabled }
    ::= { cApsConfigEntry 6 }

 cApsConfigSdBerThreshold OBJECT-TYPE
    SYNTAX      Integer32 (5..9)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Signal Degrade Bit Error Rate.

         The negated value of this number is used as the exponent
         of 10 for computing the threshold value for the Bit Error
         Rate (BER). For example, a value of 5 indicates a BER
         threshold of 10^-5.

         This object may be modified if the associated
         cApsConfigRowStatus object is equal to active(1)."
    DEFVAL { 5 }
    ::= { cApsConfigEntry 7 }

 cApsConfigSfBerThreshold OBJECT-TYPE
    SYNTAX      Integer32 (3..5)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Signal Failure Bit Error Rate.

         The negated value of this number is used as the exponent
         of 10 for computing the threshold value for the Bit Error
         Rate (BER). For example, a value of 5 indicates a BER
         threshold of 10^-5.

         This object may be modified if the associated
         cApsConfigRowStatus object is equal to active(1)."
    DEFVAL { 3 }
    ::= { cApsConfigEntry 8 }

 cApsConfigWaitToRestore OBJECT-TYPE
    SYNTAX      Integer32 (0..720)
    UNITS       "seconds"
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The Wait To Restore period in seconds.

         After clearing of a condition that necessitated an
         automatic switch, the wait to restore period must elapse
         before reverting. This is intended to avoid rapid switch
         oscillations.

         GR-253-CORE specifies a Wait To Restore range of 5 to 12

         minutes. G.783 defines a 5 to 12 minute Wait To Restore
         range in section 5.4.1.1.3, but also allows for a shorter
         WTR period in  Table 2-1,
         WaitToRestore value (MI_WTRtime: 0..(5)..12 minutes).

         This object may not be modified if the associated
          cApsConfigRowStatus object is equal to active(1)."
    DEFVAL { 300 }
    ::= { cApsConfigEntry 9 }

 cApsConfigCreationTime OBJECT-TYPE
    SYNTAX      TimeStamp
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The value of sysUpTime at the time the row was
         created"
    ::= { cApsConfigEntry 10 }

--
-- APS Status Table
--
-- This table provides APS group statistics.
--

 cApsStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF  CApsStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table provides status information about APS groups
         that have been configured on the system."
    ::= { cApsMIBObjects 2 }

 cApsStatusEntry OBJECT-TYPE
    SYNTAX       CApsStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the  cApsStatusTable. Entries
         in this table are created as a side effect of row
         addition in cApsConfigTable."
    INDEX { IMPLIED  cApsConfigName}
    ::= { cApsStatusTable  1 }

 CApsStatusEntry ::= SEQUENCE {
     cApsStatusK1K2Rcv               CApsK1K2,
     cApsStatusK1K2Trans             CApsK1K2,
     cApsStatusCurrent               BITS,
     cApsStatusModeMismatches        Counter32,
     cApsStatusChannelMismatches     Counter32,
     cApsStatusPSBFs                 Counter32,
     cApsStatusFEPLFs                Counter32,
     cApsStatusSwitchedChannel       Integer32
 }

 cApsStatusK1K2Rcv OBJECT-TYPE
    SYNTAX       CApsK1K2
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current value of the K1 and K2 bytes received on
         the protection channel."
    ::= { cApsStatusEntry 1 }

 cApsStatusK1K2Trans OBJECT-TYPE
    SYNTAX         CApsK1K2
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The current value of the K1 and K2 bytes transmitted 
         on the protection channel."
    ::= { cApsStatusEntry 2 }

 cApsStatusCurrent OBJECT-TYPE
    SYNTAX      BITS {
                      modeMismatch(0),
                      channelMismatch(1),
                      psbf(2),
                      feplf(3),
                      extraTraffic(4)
                     }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The current status of the APS group.

         modeMismatch

         Modes other than 1+1 unidirectional monitor protection
         line K2 bit 5, which indicates the architecture and K2
         bits 6-8, which indicate if the mode is unidirectional
         or bidirectional. A conflict between the current local
         mode and the received K2 mode information constitutes
         a mode mismatch.

         channelMismatch

         This bit indicates a  mismatch between the transmitted
         K1 channel and the received K2 channel has been detected.

         psbf

         This bit indicates a Protection Switch Byte Failure (PSBF)
         is in effect. This condition occurs when either an 
         inconsistent APS byte or an invalid code is detected. An 
         inconsistent APS byte occurs when no three consecutive K1
         bytes of the last 12 successive frames are identical,
         starting with the last frame containing a previously 
         consistent byte. An invalid code occurs when the incoming
         K1 byte contains an unused code or a code irrelevant for
         the specific switching operation (e.g., Reverse Request 
         while no switching request is outstanding) in three 
         consecutive frames. An invalid code also occurs when the
         incoming K1 byte contains an invalid channel number in 
         three consecutive frames.

         feplf

         Modes other than 1+1 unidirectional monitor the K1 byte
         for Far-End Protection-Line failures. A Far-End
         Protection-Line defect is declared based on receiving
         SF on the protection line.

         extraTraffic

         This bit indicates whether extra traffic is currently being
         accepted on the protection line."
    ::= { cApsStatusEntry 3 }

 cApsStatusModeMismatches OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A count of Mode Mismatch conditions."
    ::= { cApsStatusEntry 4 }

 cApsStatusChannelMismatches OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A count of Channel Mismatch conditions."
    ::= { cApsStatusEntry 5 }

 cApsStatusPSBFs OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A count of Protection Switch Byte Failure conditions.
         This condition occurs when either an inconsistent APS
         byte or an invalid code is detected. An inconsistent
         APS byte occurs when no three consecutive K1 bytes of
         the last 12 successive frames are identical, starting
         with the last frame containing a previously consistent
         byte. An invalid code occurs when the incoming K1 byte
         contains an unused code or a code irrelevant for the
         specific switching operation (e.g., Reverse Request
         while no switching request is outstanding) in three 
         consecutive frames. An invalid code also occurs when 
         the incoming K1 byte contains an invalid channel number
         in three consecutive frames."
    ::= { cApsStatusEntry 6 }

 cApsStatusFEPLFs OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A count of Far-End Protection-Line Failure conditions.
         This condition is declared based on receiving SF on
         the protection line in the K1 byte."
    ::= { cApsStatusEntry 7 }

 cApsStatusSwitchedChannel OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "This field is set to the number of the channel that is
         currently switched to protection. The value 0 indicates
         no channel is switched to protection. The values 1-14
         indicate that working channel is switched to protection."
    ::= { cApsStatusEntry 8 }
--
-- APS Map Group
--
-- Lists the SONET LTE interfaces that may be used to create APS
-- groups.
--

 cApsMap    OBJECT IDENTIFIER ::= { cApsMIBObjects 3 }

 cApsChanLTEs OBJECT-TYPE
    SYNTAX      Gauge32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The count of SONET LTE interfaces on the system. Each
         interface that is included has an ifType value of 
         sonet(39)."
    ::= { cApsMap 1 }

 cApsMapTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF  CApsMapEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists the SONET LTE interfaces on the system.
         Each interface that is listed has an ifType value of
         sonet(39)."
    ::= { cApsMap 2 }

 cApsMapEntry OBJECT-TYPE
    SYNTAX       CApsMapEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the  cApsMapTable."
    INDEX { cApsMapIfIndex }
    ::= { cApsMapTable  1 }

 CApsMapEntry ::= SEQUENCE {
     cApsMapIfIndex               InterfaceIndex,
     cApsMapGroupName             SnmpAdminString,
     cApsMapChanNumber            Integer32
     }

 cApsMapIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
        "The Interface Index assigned to a SONET LTE. This is
         an interface with ifType sonet(39)."
    ::= { cApsMapEntry 1 }

 cApsMapGroupName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (0..32))
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "A textual name for the APS group which this channel is
         included in. If the channel is not part of an APS group
         this value is set to a string of size 0.

         When an instance of  cApsChanConfigIfIndex is set
         equal to an instance of  cApsMapIfIndex,
         cApsMapGroupName is set equal to the corresponding
         value of  cApsChanConfigGroupName.

         If the  cApsMapIfIndex ceases to be equal to an
         instance of cApsChanConfigIfIndex, either because
         of a change in the value of cApsChanConfigIfIndex,
         or because of row deletion in the CApsChanConfigTable,
         cApsMapGroupName is set to a string of size 0.
        "
    ::= { cApsMapEntry 2 }

 cApsMapChanNumber OBJECT-TYPE
    SYNTAX     Integer32 (-1..14)
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
    "This field is set to a unique channel number within an APS
     group. The value 0 indicates the null channel. The values 
     1-14 define a working channel. If the SONET LTE is not part
     of an APS group this value is set to -1.

     When an instance of cApsChanConfigIfIndex is set equal
     to an instance of cApsMapIfIndex, cApsMapChanNumber
     is set equal to the corresponding value of
     cApsChanConfigNumber.

     If the  cApsMapIfIndex ceases to be equal to an instance
     of cApsChanConfigIfIndex, either because of a change in
     the value of cApsChanConfigIfIndex, or because of row
     deletion in the CApsChanConfigTable, cApsMapChanNumber
     is set to -1."
    ::= { cApsMapEntry 3 }
--
-- APS Channel Configuration Table
--
-- This table supports the addition, configuration and deletion of
-- channels in APS groups.
--

 cApsChanConfigTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF  CApsChanConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table lists the APS channels that have been 
         configured in APS groups."
    ::= { cApsMIBObjects 4 }

 cApsChanConfigEntry OBJECT-TYPE
    SYNTAX       CApsChanConfigEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the  cApsChanConfigTable."
    INDEX { cApsChanConfigGroupName,
            cApsChanConfigNumber }
    ::= { cApsChanConfigTable  1 }

 CApsChanConfigEntry ::= SEQUENCE {
     cApsChanConfigGroupName             SnmpAdminString,
     cApsChanConfigNumber                Integer32,
     cApsChanConfigRowStatus             RowStatus,
     cApsChanConfigIfIndex               InterfaceIndex,
     cApsChanConfigPriority              INTEGER
     }

 cApsChanConfigGroupName OBJECT-TYPE
    SYNTAX      SnmpAdminString (SIZE (1..32))
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A textual name for the APS group which this channel is
         included in."
    ::= { cApsChanConfigEntry 1 }

 cApsChanConfigNumber OBJECT-TYPE
    SYNTAX     Integer32 (0..14)
    MAX-ACCESS not-accessible
    STATUS     current
    DESCRIPTION
    "This field is set to a unique channel number within an APS
     group. The value 0 indicates the null channel. The values
     1-14 define a working channel.

     This field must be assigned a unique number within the group."
    ::= { cApsChanConfigEntry 2 }

 cApsChanConfigRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The status of this APS channel entry.

        An entry may not exist in the active state unless all
        objects in the entry have an appropriate value.

        A row in the  cApsChanConfigTable may not be created,
        deleted, set to notInService or otherwise modified if the
        cApsChanConfigGroupName value is equal to an
        cApsConfigName value and the associated
        cApsConfigRowStatus object is equal to active. However,
        if the  cApsConfigRowStatus object is equal to 
        notInService, a row may be created, deleted or modified.
        In other words, a channel may not be added, deleted or 
        modified if the group is active.

        A row may be created with an  cApsChanConfigGroupName
        value that is not equal to any existing instance of
        cApsConfigName. This action is the initial step in
        adding a SONET LTE to a new APS group.

        If this object is set to destroy, the associated instance
        of  cApsMapGroupName will be set to a string of size
        0 and the  cApsMapChanNumber will be set to -1. The
        channel status entry will also be deleted by this action.

        cApsChanConfigNumber must be set to a unique channel
        number within the APS group. The value 0 indicates the
        null channel. The values 1-14 define a working channel.
        When an attempt is made to set the  corresponding
        cApsConfigRowStatus field to  active the
        cApsChanConfigNumber values of all entries with
        equal cApsChanConfigGroupName fields must represent a
        set of consecutive integer values beginning with 0 or 1,
        depending on the architecture of the group, and ending with
        n, where n is  greater than or equal to 1 and less than or
        equal to 14. Otherwise, the error inconsistentValue is
        returned to the  cApsConfigRowStatus set attempt.
        "
    ::= { cApsChanConfigEntry 3 }

 cApsChanConfigIfIndex OBJECT-TYPE
    SYNTAX     InterfaceIndex
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The Interface Index assigned to a SONET LTE. This is an
         interface with ifType sonet(39). The value of this object
         must be unique among all instances of
         cApsChanConfigIfIndex. In other words, a particular
         SONET LTE can only be configured n one APS group.

         This object cannot be set if the  
         cApsChanConfigGroupName instance associated with this
         row is equal to an instance of cApsConfigName and the
         corresponding cApsConfigRowStatus object is set to 
         active. In other words this value cannot be changed if the
         APS group is active. However, This value may be changed if
         the cApsConfigRowStatus value is equal to notInService.
         "
    ::= { cApsChanConfigEntry 4 }

 cApsChanConfigPriority OBJECT-TYPE
    SYNTAX     INTEGER {low(1), high(2)}
    MAX-ACCESS read-create
    STATUS     current
    DESCRIPTION
        "The priority of the channel.

         This field deterimines whether high or low priority
         SD and SF codes are used in K1 requests.

         This field is only applicable if the channel is to be
         included in a group using the 1:n architecture. It is 
         not applicable if the channel is to be included in a
         group using the 1+1 architecture, and is ignored
         in that case.

         This object cannot be set if the
         cApsChanConfigGroupName instance associated with
         this row is equal to an instance of  cApsConfigName
         and the corresponding  cApsConfigRowStatus object is
         set to active. In other words this value cannot be
         changed if the APS group is active. However, This value
         may be changed if the cApsConfigRowStatus value is
         equal to notInService.
        "
    DEFVAL { low }
    ::= { cApsChanConfigEntry 5 }
--
-- APS Command Table
--
-- This table provides the ability to initiate APS commands.
--

 cApsCommandTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF  CApsCommandEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table allows commands to be sent to configured
         APS groups."
    ::= { cApsMIBObjects 5 }

 cApsCommandEntry OBJECT-TYPE
    SYNTAX       CApsCommandEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the  cApsCommandTable. This
         row exists only if the associated  cApsConfigEntry
         is active."
    INDEX { cApsChanConfigGroupName,
            cApsChanConfigNumber
          }
    ::= { cApsCommandTable  1 }

 CApsCommandEntry ::= SEQUENCE {
     cApsCommandSwitch          CApsSwitchCommand,
     cApsCommandControl         CApsControlCommand
 }

 cApsCommandSwitch OBJECT-TYPE
    SYNTAX       CApsSwitchCommand
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Allows the initiation of an APS switch command on the
         APS group and channel specified by the index values.

         If the APS switch command cannot be executed because an
         equal or higer priority request is in effect, an error
         is returned.

         When read this object returns the last command written
         or noCmd if no command has been written to this
         channel since initialization. The return of the last
         command written does not imply that this command is
         currently in effect. This request may have been
         preempted by a higher priority local or remote
         request. In order to determine the current state of the
         APS group it is necessary to read the objects
         cApsStatusK1K2Rcv and  cApsStatusK1K2Trans.

         The value lockoutOfProtection should only be applied
         to the protection line channel since that switch command
         prevents any of the working channels from switching to
         the protection line. Following the same logic,
         forcedSwitchProtectToWork and manualSwitchProtectToWork
         should only be applied to the protection line channel.

         forcedSwitchWorkToProtect and manualSwitchWorkToProtect
         should only be applied to a working channel.
         "
    ::= { cApsCommandEntry 1 }

 cApsCommandControl OBJECT-TYPE
    SYNTAX       CApsControlCommand
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Allows the initiation of an APS control command on the
         APS group and channel specified by the index values.

         When read this object returns the last command written
         or noCmd if no command has been
         written to this channel since initialization.

         This object does not apply to the protection line.
         "
    ::= { cApsCommandEntry 2 }

--
-- APS Channel Status Table
--
-- This table provides APS channel statistics.
--

 cApsChanStatusTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF  CApsChanStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains status information for all SONET
         LTE interfaces that are included in APS groups."
    ::= { cApsMIBObjects 6 }

 cApsChanStatusEntry OBJECT-TYPE
    SYNTAX       CApsChanStatusEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "A conceptual row in the  cApsChanStatusTable. A row 
         in this table is created as a side effect of row addition
         in the cApsChanConfigTable. The cApsChanStatusTable
         row exists as long as the  cApsChanConfigTable entry
         exists, regardless of whether the associated
         cApsChanConfigRowStatus is active.
         "
    INDEX { cApsChanConfigGroupName, cApsChanConfigNumber }
    ::= { cApsChanStatusTable  1 }

  CApsChanStatusEntry ::= SEQUENCE {
     cApsChanStatusCurrent               BITS,
     cApsChanStatusSignalDegrades        Counter32,
     cApsChanStatusSignalFailures        Counter32,
     cApsChanStatusSwitchovers           Counter32,
     cApsChanStatusLastSwitchover        TimeStamp,
     cApsChanStatusSwitchoverSeconds     Counter32
 }

 cApsChanStatusCurrent OBJECT-TYPE
    SYNTAX     BITS {
                      lockedOut(0),
                      sd(1),
                      sf(2),
                      switched(3)
                     }
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "Indicates the current state of the port.

         lockedOut

         This bit, when applied to a working channel, indicates
         that the channel is prevented from switching to the 
         protection line. When applied to the null channel, this
         bit indicates that no working channel may switch to the
         protection line.

         sd

         A signal degrade condition is in effect.

         sf

         A signal failure condition is in effect.

         switched

         The switched bit is applied to a working channel if that
         channel is currently switched to the protection line.
         "
    ::= { cApsChanStatusEntry 1 }

 cApsChanStatusSignalDegrades OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A count of Signal Degrade conditions. This
         condition occurs when the line Bit Error Rate
         exceeds the currently configured threshold."
    ::= { cApsChanStatusEntry 2 }

 cApsChanStatusSignalFailures OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "A count of Signal Failure conditions that have been
         detected on the incoming signal. This condition occurs
         when a loss of signal, loss of frame, AIS-L or a Line
         bit error rate exceeding 10^-3 is detected on an
         incoming line."
    ::= { cApsChanStatusEntry 3 }

 cApsChanStatusSwitchovers OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The number of times this channel has switched to the
         protection line. When queried with index value
         cApsChanConfigNumber set to 0, which is the 
         protection line, this object will return 0."
    ::= { cApsChanStatusEntry 4 }

 cApsChanStatusLastSwitchover OBJECT-TYPE
    SYNTAX     TimeStamp
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The value of sysUpTime when this channel last completed
         a switch to the protection line. If this channel has
         never switched to the protection line, or this channel
         is the protection line, the value 0  will be returned."
    ::= { cApsChanStatusEntry 5 }

 cApsChanStatusSwitchoverSeconds OBJECT-TYPE
    SYNTAX     Counter32
    MAX-ACCESS read-only
    STATUS     current
    DESCRIPTION
        "The cumulative Protection Switching Duration (PSD) time
         in seconds. For a working channel, this is the cumulative
         number of seconds that service was carried on the protection
         line.For the protection line, this is the cumulative number
         of seconds that the protection line has been used to carry
         any working channel traffic. This information is only valid
         if revertive switching is enabled. The value 0 will be 
         returned otherwise."
    ::= { cApsChanStatusEntry 6 }

--
-- APS EVENTS
--

 cApsNotificationsPrefix OBJECT IDENTIFIER
     ::= {  cApsMIBNotifications 0 }

 cApsEventSwitchover NOTIFICATION-TYPE
    OBJECTS { cApsChanStatusSwitchovers,
              cApsChanStatusCurrent
            }
    STATUS  current
    DESCRIPTION
        "An  cApsEventSwitchover notification is sent when the
         value of an instance of cApsChanStatusSwitchovers
         increments."
    ::= { cApsNotificationsPrefix 1 }

 cApsEventModeMismatch NOTIFICATION-TYPE
    OBJECTS { cApsStatusModeMismatches,
              cApsStatusCurrent
            }
    STATUS  current
    DESCRIPTION
        "An cApsEventModeMismatch notification is sent when
         the value of an instance of cApsStatusModeMismatches
         increments."
    ::= {  cApsNotificationsPrefix 2 }

 cApsEventChannelMismatch NOTIFICATION-TYPE
    OBJECTS { cApsStatusChannelMismatches,
              cApsStatusCurrent
            }
    STATUS  current
    DESCRIPTION
        "An  cApsEventChannelMismatch notification is sent when
         the value of an instance of cApsStatusChannelMismatches
         increments."
    ::= {  cApsNotificationsPrefix 3 }

 cApsEventPSBF NOTIFICATION-TYPE
    OBJECTS {  cApsStatusPSBFs,  cApsStatusCurrent }
    STATUS  current
    DESCRIPTION
        "An  cApsEventPSBF notification is sent when the
         value of an instance of  cApsStatusPSBFs increments."
    ::= {  cApsNotificationsPrefix 4 }

 cApsEventFEPLF NOTIFICATION-TYPE
    OBJECTS {  cApsStatusFEPLFs,  cApsStatusCurrent }
    STATUS  current
    DESCRIPTION
        "An  cApsEventFEPLFs notification is sent when the
         value of an instance of  cApsStatusFEPLFs increments."
    ::= {  cApsNotificationsPrefix 5 }

-- conformance information

 cApsGroups      OBJECT IDENTIFIER 
                            ::= { cApsMIBConformance 1 }
 cApsCompliances OBJECT IDENTIFIER
                            ::= { cApsMIBConformance 2 }

 cApsCompliance MODULE-COMPLIANCE
    STATUS  current
    DESCRIPTION
        "The compliance statement for linear APS groups."

    MODULE
    MANDATORY-GROUPS { cApsConfigGeneral, cApsStatusGeneral,
                       cApsChanGeneral
                     }

        OBJECT   cApsConfigMode
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsConfigRevert
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsConfigDirection
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsConfigExtraTraffic
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsConfigSdBerThreshold
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsConfigSfBerThreshold
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsConfigWaitToRestore
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsConfigRowStatus
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsChanConfigIfIndex
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsChanConfigPriority
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        OBJECT   cApsChanConfigRowStatus
        MIN-ACCESS  read-only
        DESCRIPTION
            "Write access is not required."

        GROUP        cApsConfigWtr
        DESCRIPTION
            "Implementation of this group is optional for all
             linear APS implementations. The information is
             applicable to groups supporting a configurable
             WTR period."

        GROUP        cApsCommandOnePlusOne
        DESCRIPTION
            "Implementation of this group is optional for all
             linear APS implementations. The information is
             applicable to groups implementing the linear
             APS 1+1 architecture and supporting set operations."

       GROUP        cApsCommandOneToN
        DESCRIPTION
            "Implementation of this group is optional for all
             linear APS implementations. The information is
             applicable to groups implementing the linear
             APS 1:n architecture and supporting set operations."

       GROUP        cApsChanOneToN
        DESCRIPTION
            "Implementation of this group is optional for all
             linear APS implementations. The information is
             applicable to groups implementing the linear
             APS 1:n architecture."

       GROUP        cApsTotalsGroup
        DESCRIPTION
            "Implementation of this group is optional for all
             linear APS implementations."

       GROUP        cApsMapGroup
        DESCRIPTION
            "Implementation of this group is optional for all
             linear APS implementations."
    ::= {  cApsCompliances 1 }

-- units of conformance

 cApsConfigGeneral    OBJECT-GROUP
    OBJECTS
    {
         cApsConfigMode,
         cApsConfigRevert,
         cApsConfigDirection,
         cApsConfigExtraTraffic,
         cApsConfigSdBerThreshold,
         cApsConfigSfBerThreshold,
         cApsConfigCreationTime,
         cApsConfigRowStatus
    }
    STATUS  current
    DESCRIPTION
        "A collection of  cApsConfigTable objects providing
         configuration information applicable to all linear
         APS groups."
    ::= {  cApsGroups 1 }

 cApsConfigWtr    OBJECT-GROUP
    OBJECTS
    {
         cApsConfigWaitToRestore
    }
    STATUS  current
    DESCRIPTION
        "The  cApsConfigTable object that provides information
         which is applicable to groups supporting a configurable
         WTR period."
    ::= {  cApsGroups 2 }

--  If set operations are not supported neither of the following
--  two groups are implemented. If sets are supported only one 
--  of these groups is implemented for a linear APS group instance.

 cApsCommandOnePlusOne    OBJECT-GROUP
    OBJECTS
    {
         cApsCommandSwitch
    }
    STATUS  current
    DESCRIPTION
        "The   cApsCommandTable object which is applicable
         to groups implementing the linear APS 1+1 architecture.
         Also, set operations must be supported."
    ::= {  cApsGroups 3 }

 cApsCommandOneToN    OBJECT-GROUP
    OBJECTS
    {
         cApsCommandSwitch,
         cApsCommandControl
    }
    STATUS  current
    DESCRIPTION
    "A collection of  cApsCommandTable objects which are 
     applicable to groups implementing the linear APS 1:n 
     architecture. Also, set operations must be supported."
    ::= {  cApsGroups 4 }

 cApsStatusGeneral    OBJECT-GROUP
    OBJECTS
    {
         cApsStatusK1K2Rcv,
         cApsStatusK1K2Trans,
         cApsStatusCurrent,
         cApsStatusModeMismatches,
         cApsStatusChannelMismatches,
         cApsStatusPSBFs,
         cApsStatusFEPLFs,
         cApsStatusSwitchedChannel
    }
    STATUS  current
    DESCRIPTION
        "A collection of  cApsStatusTable objects providing
         status information applicable to all linear APS groups."
    ::= {  cApsGroups 5 }

 cApsChanGeneral    OBJECT-GROUP
    OBJECTS
    {
         cApsChanConfigIfIndex,
         cApsChanConfigRowStatus,
         cApsChanStatusCurrent,
         cApsChanStatusSignalDegrades,
         cApsChanStatusSignalFailures,
         cApsChanStatusSwitchovers,
         cApsChanStatusLastSwitchover,
         cApsChanStatusSwitchoverSeconds
   }
    STATUS  current
    DESCRIPTION
        "A collection of channel objects providing information
         applicable to all linear APS channels."
    ::= {  cApsGroups 6 }

 cApsChanOneToN    OBJECT-GROUP
    OBJECTS
    {
         cApsChanConfigPriority
    }
    STATUS  current
    DESCRIPTION
        "The  cApsChanConfigTable object that provides
         information which is only applicable to groups
         implementing the linear APS 1:n architecture."
    ::= {  cApsGroups 7 }

 cApsTotalsGroup OBJECT-GROUP
    OBJECTS
    {
         cApsConfigGroups,
         cApsChanLTEs
    }
    STATUS  current
    DESCRIPTION
        "A collection of objects providing optional counts of
         configured APS groups and SONET LTE interfaces."
    ::= {  cApsGroups 8 }

 cApsMapGroup OBJECT-GROUP
    OBJECTS
    {
         cApsMapGroupName,
         cApsMapChanNumber
    }
    STATUS  current
    DESCRIPTION
        "A collection of  cApsMapTable objects providing
         a mapping from sonet(39) InterfaceIndex to group name
         and channel number for assigned APS channels and a
         list of unassigned sonet(39) interfaces."
    ::= {  cApsGroups 9 }

 cApsEventOptional NOTIFICATION-GROUP
    NOTIFICATIONS { cApsEventSwitchover,  
                    cApsEventModeMismatch,
                    cApsEventChannelMismatch,
                    cApsEventPSBF,
                    cApsEventFEPLF
                  }
    STATUS    current
    DESCRIPTION
        "A collection of SONET linear APS notifications that may
         optionally be implemented."
    ::= {  cApsGroups 10 }

END
