-- *****************************************************************
-- smartoptics SONET APS MIB
--
-- Nov 2000, Omri Viner
--
-- Copyright (c) 1999-2000 by smartoptics Ltd.
-- All rights reserved.
-- *****************************************************************

SL-SONET-APS-MIB DEFINITIONS ::= BEGIN

IMPORTS
	MODULE-IDENTITY, OBJECT-TYPE,
	NOTIFICATION-TYPE ,Unsigned32,
	Counter32, TimeTicks, IpAddress		FROM SNMPv2-SMI
	DisplayString, TruthValue, RowStatus
								  		FROM SNMPv2-TC
	MODULE-COMPLIANCE, OBJECT-GROUP,
	NOTIFICATION-GROUP                  FROM SNMPv2-CONF
	InterfaceIndex		               	FROM IF-MIB
	PerfCurrentCount, PerfIntervalCount,
	PerfTotalCount                      FROM PerfHist-TC-MIB
	slSonetMib				      		FROM SL-SONET-MIB;

slSonetApsMib MODULE-IDENTITY
	LAST-UPDATED "0008280000Z"
	ORGANIZATION "Smartoptics AS"
	CONTACT-INFO
        "E-mail: d.lutz@smartoptics.com"
	DESCRIPTION
		"This MIB module describes the SiteLight SONET APS."
	::= { slSonetMib 5 }


slSonetApsConfig           OBJECT IDENTIFIER ::= {slSonetApsMib 1}
slSonetApsTraps            OBJECT IDENTIFIER ::= {slSonetApsMib 2}

--
-- Sonet APS config Table
--

slSonetApsConfigTable OBJECT-TYPE
         SYNTAX  SEQUENCE OF SlSonetApsConfigEntry
         MAX-ACCESS  not-accessible
         STATUS  current
         DESCRIPTION
             "This table contains objects to configure APS 
              (Automatic Protection Switching) feature in a SONET 
              Line. APS is the ability to configure a pair of SONET 
              lines for redundancy so that the hardware will 
              automatically switch the active line from working line
              to the protection line or vice versa, within 50ms, 
              when the active line fails."
         ::= { slSonetApsConfig 1 }
 
slSonetApsConfigEntry OBJECT-TYPE
        SYNTAX  SlSonetApsConfigEntry
        MAX-ACCESS  not-accessible
        STATUS  current
        DESCRIPTION
            "An entry is created during startup if the SEEP specifies that there are two trunk ports.
             The value of slSonetApsEnable determines if the APS is configured or not."
         INDEX   {slSonetApsWorkingIndex}
         ::= { slSonetApsConfigTable 1 }

SlSonetApsConfigEntry ::=
              SEQUENCE {
               slSonetApsWorkingIndex                InterfaceIndex,
               slSonetApsProtectionIndex             InterfaceIndex,
               slSonetApsEnable                      INTEGER,
               slSonetApsArchMode                    INTEGER,
               slSonetApsActiveLineRx                INTEGER,
               slSonetApsActiveLineTx                INTEGER,
               slSonetApsWaitToRestore               Unsigned32,
               slSonetApsDirection                   INTEGER,
               slSonetApsRevertive                   INTEGER,
               slSonetApsDirectionOperational        INTEGER,
               slSonetApsArchModeOperational         INTEGER,
               slSonetApsChanStatus                  BITS,
               slSonetApsChanSignalDegrades          Counter32,
               slSonetApsChanSignalFailures          Counter32,
               slSonetApsChanLastSwitchover          TimeTicks,
               slSonetApsLineFailureCodeStatus       BITS,
               slSonetApsConfigSwitchCommand         INTEGER,
               slSonetApsLineSwitchReason            INTEGER,
               slSonetApsResetCounters               INTEGER,
               slSonetApsConfigActiveRequest		 INTEGER,
               slSonetApsConfigExerciseResult        TruthValue
              }
 
slSonetApsWorkingIndex OBJECT-TYPE
     SYNTAX    InterfaceIndex 
     MAX-ACCESS    read-only
     STATUS    current
     DESCRIPTION
         "When a pair of APS lines is configured, one line has
          to be the working line, which is the primary line,
          and the other has to be the protection line, which
          is the backup line. This object refers to the working line
          in the APS pair."
     ::= { slSonetApsConfigEntry 1 }
 
slSonetApsProtectionIndex OBJECT-TYPE
       SYNTAX    InterfaceIndex 
       MAX-ACCESS    read-create
       STATUS    current
       DESCRIPTION
          "The protection line indicates that it will become
           the active line when an APS switch occurs (APS switch
           could occur because of a failure on the working line)."
        ::= { slSonetApsConfigEntry 2 }
 
slSonetApsEnable  OBJECT-TYPE
     SYNTAX    INTEGER {
               slSonetApsDisabled (1),
               slSonetApsEnabled  (2)
               }
     MAX-ACCESS    read-create
     STATUS    current
     DESCRIPTION
          "This object is used to enable or disable the APS feature
           on the working/protection line pairs."
     ::= { slSonetApsConfigEntry 3 }
 
slSonetApsArchMode OBJECT-TYPE
     SYNTAX    INTEGER {
               onePlusOne(1),
               oneToOne(2)
               }
     MAX-ACCESS read-create
     STATUS    current
     DESCRIPTION
        "This object is used to configure APS architecture mode
         on the working/protection line pairs (read-write).
       
          All of the following are supported on single slot.
          oneToOne(2) is not  supported across 2 slots,i.e. the 
          working and protection slot numbers must be the same in 
          oneToOne(2).
       
          onePlusOne : This can be supported on the same card
          and across 2 cards.
          This mode means that the transmit and receive signals
          go only over the active line(which could be working or 
          protection line). (straight cable implied)
       
          oneToOne : This is supported only on the same card
          This mode means that the transmit and receive signals
          go over the working and protection lines.
          (straight cable implied)."
   ::= { slSonetApsConfigEntry 4 }
 
slSonetApsActiveLineRx OBJECT-TYPE
         SYNTAX    INTEGER {
                   slSonetApsWorkingLine(1),
                   slSonetApsProtectionLine(2)
                   }
         MAX-ACCESS    read-only
         STATUS    current
         DESCRIPTION
           "This object indicates which Rx line is currently active. 
            It could be the working line, the protection line or 
            none if neither working nor protection line is active. 
            This object reflects the status of receive direction."
   ::= { slSonetApsConfigEntry 5 }
 
slSonetApsActiveLineTx OBJECT-TYPE
         SYNTAX    INTEGER {
                   slSonetApsWorkingLine(1),
                   slSonetApsProtectionLine(2)
                   }
         MAX-ACCESS    read-only
         STATUS    current
         DESCRIPTION
           "This object indicates which Tx line is currently active. 
            It could be the working line, the protection line or 
            none if neither working nor protection line is active. 
            This object reflects the status of receive direction.
            Not relevant for 1+1."
   ::= { slSonetApsConfigEntry 6 }
 
slSonetApsWaitToRestore OBJECT-TYPE
        SYNTAX Unsigned32 (1..12)
        UNITS "minutes"
        MAX-ACCESS read-create
        STATUS    current
        DESCRIPTION
                "This object contains interval in minutes to wait 
                 before attempting to switch back to working line. 
                 Not applicable if the line is configured in 
                 non-revertive mode, i.e. protection line will 
                 continue to be active, even if failures on the 
                 working line are cleared. The framer clears the 
                 signal-fault and signal-degrade when APS switch 
                 occurs. Please refer to 'slSonetApsRevertive' for 
                 description of non-revertive (read-write)."
        ::= { slSonetApsConfigEntry 7 }
 
slSonetApsDirection OBJECT-TYPE
           SYNTAX    INTEGER {
                     uniDirectional(1),
                     biDirectional(2)
                     }
           MAX-ACCESS    read-create
           STATUS    current
           DESCRIPTION
              "This object is used to configure the switching 
               direction which this APS line supports (read-write). 

               Unidirectional : APS switch only in one direction.
               Bidirectional  : APS switch in both ends of the line."
        ::= { slSonetApsConfigEntry 8 }
 
slSonetApsRevertive OBJECT-TYPE
       SYNTAX    INTEGER {
                 nonrevertive(1),
                 revertive(2)
                }
       MAX-ACCESS    read-create
       STATUS    current
       DESCRIPTION
           "This object is used to configure the APS revertive or
            nonrevertive option (read-write). 
    
            revertive : 
              Will switch the working line back to active state after
              the Wait-To-restore interval has expired and the 
              working line Signal-Fault/Signal-Degrade has been 
              cleared. Please refer to 'slSonetApsWaitToRestore' for 
              description of Wait-To-Restore interval.
            nonrevertive : 
              The  protection line continues to be the active line,
              The active line does not switch to the working line."
     ::= { slSonetApsConfigEntry 9 }
 
slSonetApsDirectionOperational OBJECT-TYPE
           SYNTAX INTEGER {
                     uniDirectional(1),
                     biDirectional(2)
                     }
           MAX-ACCESS    read-only
           STATUS    current
           DESCRIPTION
              "This object shows the actual APS direction that is 
               implemented on the Near End terminal. APS direction 
               configured through slSonetApsDirection is negotiated with
               the Far End and APS direction setting acceptable to 
               both ends is operational at the Near End."
        ::= { slSonetApsConfigEntry 10 }

slSonetApsArchModeOperational OBJECT-TYPE
     SYNTAX    INTEGER {
               onePlusOne(1),
               oneToOne(2)
               }
     MAX-ACCESS read-only
     STATUS    current
     DESCRIPTION
           "This object shows the actual APS architecture mode that
            is implemented on the Near End terminal. APS architecture
            mode configured through slSonetApsArchMode object is 
            negotiated with the Far End through APS channel. 
            Architecture mode acceptable to both the Near End and 
            the Far End terminals is then operational at the Near 
            End. This value can be different than the APS 
            Architecture mode configured."
     ::= { slSonetApsConfigEntry 11 }

slSonetApsChanStatus OBJECT-TYPE
       SYNTAX     BITS {
                  lockedOut(0),
                  sdWorking(1),
                  sdProtecting(2),
                  sfWorking(3),
                  sfProtecting(4),
                  switched(5),
				  remoteRequest(6) 
               }
       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.

            sdWorking
            A signal degrade condition on the working line is in effect.

            sdProtecting
            A signal degrade condition on the protecting line is in effect.

            sfWorking
            A signal failure condition on the working line is in effect.

            sfProtecting
            A signal failure condition on the protecting line is in effect.

            switched
            The switched bit is applied to a working channel if that
            channel is currently switched to the protection line.
            
			remoteRequest
			The switch request was initiated by the remote NE."
       ::= { slSonetApsConfigEntry 12 }

slSonetApsChanSignalDegrades 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."
       ::= { slSonetApsConfigEntry 13 }

slSonetApsChanSignalFailures 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."
       ::= { slSonetApsConfigEntry 14 }

slSonetApsChanLastSwitchover OBJECT-TYPE
       SYNTAX     TimeTicks
       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."
       ::= { slSonetApsConfigEntry 15 }

slSonetApsLineFailureCodeStatus OBJECT-TYPE
      SYNTAX BITS {
              slSonetApsChannelMismatch(0),
              slSonetApsProtectionByteFail(1),
              slSonetApsFEProtectionFailure(2),
              slSonetApsModeMismatch(3)
              
        }
      MAX-ACCESS read-only
      STATUS  current
      DESCRIPTION
           "The Sonet APS line failure code status - this is the 
           status of failure encountered by the APS line. 

            slSonetApsChannelMismatch: trasmitted K1 byte and
                                  received K2 byte do not match.
            slSonetApsProtectionByteFail: It could mean either K1 byte 
                                     with invalid type of switch 
                                     request bits was received, or,  
                                     priority of received K1 byte 
                                     is lower than the transmitted 
                                     K1 byte.
            slSonetApsFEProtectionFailure: Remote end error detected.
            slSonetApsModeMismatch: Mismatch of Bit 5 of the K2 Byte."
      REFERENCE
          "GR-253-CORE"
      ::= { slSonetApsConfigEntry 16 }

slSonetApsConfigSwitchCommand OBJECT-TYPE
    SYNTAX      INTEGER {
                    clear(1),
                    lockoutOfProtection(2),
                    forcedSwitchOfWorking(3),
                    forcedSwitchOfProtection(4),
                    manualSwitchOfWorking(5),
                    manualSwitchOfProtection(6),
                    exercise(7)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "A switch command initiates one external request for evaluation
        (read-write).

        (1) Clear - Clears all switch commands on the channel.

        (2) Lockout Of Protection - Prevents any of the working channels
        from switching to the protection line by issuing a Lockout of
        Protection request [unless a request of equal priority (i.e., a
        Lockout of Protection) is already in effect].

        (3) Forced Switch of Working (to Protection) - Switches the
        working channel to the protection line unless a request of equal
        or higher priority is in effect, by issuing a Forced Switch
        request.

        (4) Forced Switch of Protection (to Working) - Switches the
        working channel back from the protection line to the working
        line unless a request of equal or higher priority is in effect,
        by issuing a Forced Switch request.  This command applies only
        in the 1+1 architecture.

        (5) Manual Switch of Working (to Protection) - Switches the
        working channel to the protection line unless a request of equal
        or higher priority is in effect, by issuing a Manual Switch
        request.

        (6) Manual Switch of Protection (to Working) - Switches the
        working channel back from the protection line to the working
        line unless a request of equal or higher priority is in effect,
        by issuing a Manual Switch request.  This command applies only
        in the 1+1 architecture for the null.

        (7) Exercise - Exercises the protocol for a protection switch
        unless a request of equal or higher priority is in effect, by
        issuing an Exercise request and checking the response on the APS
        channel.

        Reading this variable always returns zero (0)."
    DEFVAL  { clear }
    ::= { slSonetApsConfigEntry 17 }
 
slSonetApsLineSwitchReason OBJECT-TYPE
      SYNTAX INTEGER {
            slSonetApsOther(1),
            slSonetApsRevertive(2),
            slSonetApsManual(3),
            slSonetApsSignalDegrade(4),
            slSonetApsSignalFailure(5),
            slSonetApsForceSwitch(6),
            slSonetApsRemoteRequest(7),
            slSonetApsLockOut(8)
		}
    MAX-ACCESS read-only
    STATUS  current
    DESCRIPTION
          "The reason why APS switch happened. When the working
           line on one end fails, its other end is told to do
           an  APS switch. The following options in the increasing
           order of priority indicate what type of switch request 
           it is. 

          slSonetApsRevertive : Switch back to working line after the 
            Wait-to-Restore interval is over, and failures are 
            cleared. It is the lowest priority.
          slSonetApsManual : Manual switch causes APS switch unless a 
            request of equal or higher priority is in effect.
          slSonetApsSignalDefectLow : Switch happened because threshold 
            for 'slSonetApsSigFaultBER' was exceeded. 
          slSonetApsSignalDefectHigh : Same as above, but higher priority.
          slSonetApsSignalFailureLow : Switch happened because threshold 
            for 'slSonetApsSigDegradeBER' was exceeded. 
          slSonetApsSignalFailureHigh : Same as above, but higher 
            priority.
          slSonetApsForceSwitch : Forced switch forces hardware to switch
            the active line even if the other line (could be 
            working line or protection line) is in alarm.
          slSonetApsLockOut : This is the highest priority switch. This
            will override all other requests. 
          slSonetApsRemoteRequest : indicates that the local switchover 
            was in response to a remote request to switch.
          slSonetApsLockOut :  indicates that the last switchover to the 
            working occurred because of protection lockout."      
      ::= { slSonetApsConfigEntry 18 }

slSonetApsResetCounters OBJECT-TYPE
    SYNTAX      INTEGER {
                    resetCounters(1)
                }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Setting this variable to 1 will cause the counters
        on all of the SONET APS Config Table to be initialized 
        to zero (read-write)."
    ::= { slSonetApsConfigEntry 19 }

slSonetApsConfigActiveRequest OBJECT-TYPE
    SYNTAX      INTEGER {
                    slSonetApsOther(1),
                    slSonetApsRevertive(2),
                    slSonetApsManual(3),
                    slSonetApsSignalDegrade(4),
                    slSonetApsSignalFailure(5),           
                    slSonetApsForceSwitch(6),
                    slSonetApsRemoteRequest(7),
                    slSonetApsLockOut(8)
                 }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The Active Switch APS request:

          slSonetApsRevertive : Switch back to working line after the 
            Wait-to-Restore interval is over, and failures are 
            cleared. It is the lowest priority.
          slSonetApsManual : Manual switch causes APS switch unless a 
            request of equal or higher priority is in effect.
          slSonetApsSignalDefectLow : Switch happened because threshold 
            for 'slSonetApsSigFaultBER' was exceeded. 
          slSonetApsSignalDefectHigh : Same as above, but higher priority.
          slSonetApsSignalFailureLow : Switch happened because threshold 
            for 'slSonetApsSigDegradeBER' was exceeded. 
          slSonetApsSignalFailureHigh : Same as above, but higher 
            priority.
          slSonetApsForceSwitch : Forced switch forces hardware to switch
            the active line even if the other line (could be 
            working line or protection line) is in alarm.
          slSonetApsLockOut : This is the highest priority switch. This
            will override all other requests. 
          slSonetApsRemoteRequest : indicates that the local switchover 
            was in response to a remote request to switch.
          slSonetApsLockOut :  indicates that the last switchover to the 
            working occurred because of protection lockout."
    ::= { slSonetApsConfigEntry 20 }

slSonetApsConfigExerciseResult OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This variable contains the result of the last exercise command.
        True - means test success. False - otherwise."
    ::= { slSonetApsConfigEntry 21 }

--
-- APS TRAPS
--

slSonetApsTrapSwitchover NOTIFICATION-TYPE
       OBJECTS { slSonetApsWorkingIndex, 
       			 slSonetApsActiveLineRx,
       			 slSonetApsLineSwitchReason }
       STATUS  current 
       DESCRIPTION
               "An slSonetApsTrapSwitchover notification is sent when the
               value whenever a switchover occures."
       ::= { slSonetApsTraps 1 }

slSonetApsTrapFailureCodeChanged NOTIFICATION-TYPE
       OBJECTS { slSonetApsWorkingIndex, slSonetApsLineFailureCodeStatus }
       STATUS  current
       DESCRIPTION
               "An slSonetApsTrapChannelMismatch notification is sent when
               the APS failure code status is changed."
       ::= { slSonetApsTraps 2 }

slSonetApsTrapEnabled NOTIFICATION-TYPE
       OBJECTS { slSonetApsWorkingIndex, slSonetApsEnable }
       STATUS  current 
       DESCRIPTION
               "An slSonetApsTrapSwitchover notification is sent when the
               value of slSonetApsEnable is changed."
       ::= { slSonetApsTraps 3 }

END



