-- *****************************************************************
-- CISCO OSCP MIB
--
-- May 2001, Mickey Spiegel, Marek Tomaszewski
--
-- Copyright (c) 2001 by cisco Systems, Inc.
-- All rights reserved.
-- *****************************************************************

CISCO-OSCP-MIB DEFINITIONS ::= BEGIN

IMPORTS
        MODULE-IDENTITY,
        OBJECT-TYPE,
        NOTIFICATION-TYPE,
        Counter32,
        Gauge32,
        Unsigned32
                                                    FROM SNMPv2-SMI
        TEXTUAL-CONVENTION,
        TruthValue,
        RowStatus
                                                    FROM SNMPv2-TC
        InterfaceIndex
                                                    FROM IF-MIB
        MODULE-COMPLIANCE,
        OBJECT-GROUP,
        NOTIFICATION-GROUP
                                                    FROM SNMPv2-CONF
        ciscoMgmt
                                                    FROM CISCO-SMI
        ;

ciscoOscpMIB MODULE-IDENTITY
        LAST-UPDATED    "200105180000Z"
        ORGANIZATION    "Cisco Systems, Inc."
        CONTACT-INFO
                "       Cisco Systems
                        Customer Service

                Postal: 170 W Tasman Drive
                        San Jose, CA  95134
                        USA

                   Tel: +1 800 553-NETS

                E-mail: cs-dwdm@cisco.com"
        DESCRIPTION
                "The MIB module for managing the Cisco Optical
                 Supervisory Channel Protocol (OSCP). The OSCP is used
                 to determine and maintain wavelength connectivity with
                 remote nodes. OSCP includes support for bundles of
                 wavelengths to a common remote node, including dynamic
                 selection of the message channel on one wavelength to
                 carry control and management traffic for the entire
                 wavelength bundle."
        REVISION        "200105180000Z"
        DESCRIPTION
                "Initial version of this MIB module."
        ::= { ciscoMgmt 202 }


ciscoOscpMIBObjects OBJECT IDENTIFIER ::= { ciscoOscpMIB 1 }

    CoscpSwitchId ::= TEXTUAL-CONVENTION
        STATUS        current
        DESCRIPTION
            "A switch identifier - this is used to identify the 
             originator and recipient of the OSCP hello packets.
             A valid switch identifier has a value different than
             all zeros. A switch identifier value of all zeros
             indicates that the switch identifier of a remote switch
             is not yet known."
        SYNTAX        OCTET STRING (SIZE(6))

    CoscpPortId ::= TEXTUAL-CONVENTION
        STATUS        current
        DESCRIPTION
            "An OSCP port ID - this is used to identify a point of
             attachment of an optical wavelength to a given switch.
             The distinguished value 0 indicates that no port is
             specified.
             The terms link and wavelength are used interchangeably.
             Thus the Optical Supervisory Channel (OSC) is created on a
             given wavelength (link)." 
        SYNTAX        Unsigned32

    CoscpBundleId ::= TEXTUAL-CONVENTION
        STATUS        current
        DESCRIPTION
            "An OSCP bundling identifier - this is used to determine
             which wavelengths to a given remote switch are to be 
             aggregated and treated as a single logical link with a
             single control channel. This control channel is called
             the Optical Supervisory Channel (OSC).
             The scope of a bundle identifier value is limited to
             wavelengths between the same pair of switches. The same
             bundle identifier value may be used for wavelengths
             between other pairs of nodes without confusion."
        SYNTAX        Unsigned32 (0..255) 

    CoscpVersion ::= TEXTUAL-CONVENTION
        STATUS        current
        DESCRIPTION
            "Indicates a version of OSCP."
        SYNTAX        INTEGER { unknown(1), version1(2) }

-- the base group

ciscoOscpBaseGroup OBJECT IDENTIFIER ::= { ciscoOscpMIBObjects 1 }

coscpHighestVersion OBJECT-TYPE
        SYNTAX        CoscpVersion
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "The highest version of OSCP that the software in this
             switch is capable of executing. If the version of a
             received hello packet is greater than coscpHighestVersion,
             the received hello packet will be discarded."
        ::= { ciscoOscpBaseGroup 1 }

coscpLowestVersion OBJECT-TYPE
        SYNTAX        CoscpVersion
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "The lowest version of OSCP that the software in this
             switch is capable of executing. If the version of a
             received hello packet is smaller than coscpLowestVersion,
             the received hello packet will be discarded. The switch
             supports all OSCP versions between the lowest and the
             highest versions inclusive."
        ::= { ciscoOscpBaseGroup 2 }

coscpSwitchId OBJECT-TYPE
        SYNTAX        CoscpSwitchId
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION
            "The value this switch is using to represent itself as
             a network node. This should be a globally unique
             identifier. Typically this value is a MAC address
             preconfigured in the switch hardware."
        ::= { ciscoOscpBaseGroup 3 }

coscpPriorityChangeMode OBJECT-TYPE
        SYNTAX        INTEGER {
                                immediate (1),
                                delayed (2)
                                }
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION
            "This value defines how OSCP will react to a change in the
             configured value of coscpLinkSelPriority. If the value is
             set to 'immediate', the reevaluation of the selected OSC
             in the bundle occurs immediately. If the value is set to
             'delayed', then the OSC reevaluation can happen only when
             the current OSC goes out of the 'twoWay' state."
        DEFVAL { immediate }
        ::= { ciscoOscpBaseGroup 4 }

coscpHelloHoldDown OBJECT-TYPE
        SYNTAX        Unsigned32 (100..10000)
        UNITS         "milliseconds"
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION
            "In OSCP, some hello packets are generated periodically
             while others are triggered by events. Specifically,
             event-triggered hellos are sent upon every state change
             (except 'oneWay' to 'twoWay') and when a change occurs in
             the bundle identifier. To avoid potential system
             misbehavior in which hello packets would be triggered in
             an uncontrolled fashion, a hello hold down timer is
             introduced that prevents successive event-triggered hellos
             from being sent in too short a time interval.
             This object contains the minimum time between (triggered)
             hellos.
             This value must be smaller than 75% of the value of
             coscpHelloInterval."
        DEFVAL { 100 }
        ::= { ciscoOscpBaseGroup 5 }

coscpHelloInterval OBJECT-TYPE
        SYNTAX        Unsigned32 (150..30000)
        UNITS         "milliseconds"
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION
            "The average time interval between successive hellos sent
             by this switch on each link running OSCP, in the absence
             of triggered hellos."
        DEFVAL { 3000 }
        ::= { ciscoOscpBaseGroup 6 }

coscpHelloInactivityFactor OBJECT-TYPE
        SYNTAX        Unsigned32 (2..50)
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION
            "The value for the Hello Inactivity factor that this
             switch will use to determine when a link has gone down.
             A link will be returned to the 'attempt' state if the
             switch has not received an OSCP hello packet for an
             interval of time equal to coscpHelloInactivityFactor
             multiplied by the remote switch's advertised Hello
             Interval from the most recent received hello packet."
        DEFVAL { 5 }
        ::= { ciscoOscpBaseGroup 7 }

coscpNotifiesEnabled OBJECT-TYPE
        SYNTAX        TruthValue
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION
            "Notifications that OSCP has gone down on a link are
             enabled if this value is set to 'true'."
        DEFVAL { false }
        ::= { ciscoOscpBaseGroup 8 }

-- OSCP link table

coscpLinkTable OBJECT-TYPE
        SYNTAX        SEQUENCE OF CoscpLinkEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "This table contains the objects necessary to describe the
             operation of OSCP over wavelengths that terminate at this
             switch. There is one entry for each wavelength that has a
             message channel for control and management purposes.  The
             table is also used to configure the parameters used to
             control aggregation of multiple wavelengths that terminate
             at the same remote switch.
             Most of the information in this table is discovered by
             OSCP dynamically."
        ::= { ciscoOscpMIBObjects 2 }

coscpLinkEntry OBJECT-TYPE
        SYNTAX        CoscpLinkEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "An entry in the table, containing information about a link
             attached to a switch running OSCP."
        INDEX         { coscpLinkPortId }
        ::= { coscpLinkTable 1 }

CoscpLinkEntry ::=
        SEQUENCE {
                coscpLinkPortId             CoscpPortId,
                coscpLinkType               INTEGER,
                coscpLinkVersion            CoscpVersion,
                coscpLinkHelloState         INTEGER,
                coscpLinkRemoteSwitchId     CoscpSwitchId,
                coscpLinkRemotePortId       CoscpPortId,
                coscpLinkDerivedBundleId    CoscpBundleId,
                coscpLinkConfigBundleId     CoscpBundleId,
                coscpLinkIfIndex            InterfaceIndex,
                coscpLinkSelPriority        Unsigned32,
                coscpLinkInHellos           Counter32,
                coscpLinkInDiscardedHellos  Counter32,
                coscpLinkOutHellos          Counter32,
                coscpLinkTransDown          Counter32
                }

coscpLinkPortId OBJECT-TYPE
        SYNTAX        CoscpPortId
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "The Port Identifier of the link as selected by the local
             switch. This value has meaning only within the context of
             the switch to which the port is attached. This value is
             invariant across system restarts."
        ::= { coscpLinkEntry 1 }

coscpLinkType OBJECT-TYPE
        SYNTAX        INTEGER {
                                unknown(1),
                                dedicatedWavelength(2),
                                inBand(3)
                                }
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object indicates the type of link being described.

             A link type of 'dedicatedWavelength' represents a
             wavelength that is dedicated to carrying control and
             network management traffic, rather than user data. A
             dedicated wavelength should be terminated on the switch
             that physically connects to the fiber carrying that
             wavelength, i.e., the remote switch should be a physical
             neighbor.

             A link type of 'inBand' represents a message channel used
             to carry control and management traffic on a wavelength
             that otherwise carries user data. An 'inBand' link does
             not need to be terminated on the switch that physically
             connects to the fiber carrying that wavelength, i.e., the
             remote switch need not be a physical neighbor."
        ::= { coscpLinkEntry 2 }

coscpLinkVersion OBJECT-TYPE
        SYNTAX        CoscpVersion
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object indicates the version of OSCP used to exchange
             information over this link. If communication with the
             remote switch has not yet been established, then the
             Version is set to 'unknown'."
        ::= { coscpLinkEntry 3 }

coscpLinkHelloState OBJECT-TYPE
        SYNTAX        INTEGER {
                                down(1),
                                attempt(2),
                                oneWay(3),
                                twoWay(4)
                                }
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object indicates the state of the Hello protocol 
             exchange over this link.

             The 'down' state is the initial state of the OSCP Hello
             finite state machine. This state is also reached when
             lower-level protocols declare that the wavelength is not
             usable. No hello packets are sent or received in this
             state.

             The 'attempt' state indicates that either no hellos or
             hellos with mismatch information have recently been
             received from the remote switch. In this state, attempts
             are made to contact the remote switch by periodically
             sending hellos with period coscpHelloInterval.

             The 'oneWay' state indicates that Hellos have recently
             been received from the remote switch, but the remote
             switch identifier and the remote port identifier in the
             remote switch's hello packets were set to zero. This means
             that the remote switch does not know the identity of this
             switch.

             The 'twoWay' state indicates that hellos have recently
             been received from the remote switch including the
             correct remote switch identifier and remote port
             identifier fields. This means that bi-directional
             communication with the remote switch over the message
             channel on this wavelength has been achieved. The link is
             now capable of becoming the active OSC for a wavelength
             bundle.

             A link that is not in the 'twoWay' state is not capable of
             becoming the active OSC for a wavelength bundle."
        ::= { coscpLinkEntry 4 }

coscpLinkRemoteSwitchId OBJECT-TYPE
        SYNTAX        CoscpSwitchId
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object indicates the switch identifier of the remote
             switch on the other end of the link." 
        ::= { coscpLinkEntry 5 }

coscpLinkRemotePortId OBJECT-TYPE
        SYNTAX        CoscpPortId
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object indicates the port identifier of the port at
             the remote end of the link as assigned by the remote
             switch."
        ::= { coscpLinkEntry 6 }

coscpLinkDerivedBundleId OBJECT-TYPE
        SYNTAX        CoscpBundleId
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object identifies the wavelength bundle to the remote
             switch that this link belongs to. All links with the same
             value of coscpLinkRemoteSwitchId and the same value of
             this object are aggregated and treated as a single logical
             link with a single control channel. The aggregated logical
             link that contains this link is shown in coscpBundleTable
             as the coscpBundleEntry with coscpBundleRemoteSwitchId
             value equal to the value of coscpLinkRemoteSwitchId and
             with coscpBundleId value equal to the value of this
             object.

             The value of this object is derived from the bundle
             identifier advertised by this switch in the OSCP
             (specified in coscpLinkConfigBundleId) and the bundle
             identifier advertised by the remote switch. The two
             switches on either end of the link run the same algorithm
             on the same information to determine common values of the
             derived bundle identifier. The derivation process is
             intended for minimal configuration as well as acceptable
             behavior in the face of misconfiguration.

             By default all links have the coscpLinkConfigBundleId
             value zero. Since all links have the same default value,
             the default behavior is to aggregate all links between two
             switches into a single logical link with derived bundle
             identifier value zero.

             In order to assign a non-default bundle identifier to a
             link between two switches, only one side needs to be
             configured with the non-default value. The
             coscpLinkConfigBundleId value zero indicates that the
             switch will use as the derived bundle identifier value
             whatever value the remote switch has.

             The algorithm for computing the value of the derived
             bundle identifier is:
             1. If the two switches exchange identical values of the
                configured bundle identifier, that value becomes the
                derived bundle identifier.
             2. If the configured bundle identifier value of one of the
                switches is zero and that of the other switch is
                non-zero, the non-zero value becomes the derived bundle
                identifier value.
             3. If the configured bundle identifier values of the two
                switches are different and both non-zero, the link has
                been misconfigured and the derived bundle identifier
                value becomes zero."
        ::= { coscpLinkEntry 7 }

coscpLinkConfigBundleId OBJECT-TYPE
        SYNTAX        CoscpBundleId
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION
            "This object specifies the identifier of the wavelength
             bundle to the remote switch configured for this link.
             The configured bundle identifier is carried in the OSCP
             hello packet. At both this switch and the remote switch,
             the configured bundle identifier is used to derive
             coscpLinkDerivedBundleId according to the algorithm
             presented in the description of the
             coscpLinkDerivedBundleId.

             By default all links have the value zero. Since all links
             have the same default value, the default behavior is to
             aggregate all links between two switches into a single
             logical link with derived bundle identifier value zero.

             In order to assign a non-default bundle identifier to a
             link between two switches, only one side needs to be
             configured with the non-default value. The distinguished
             value zero indicates that the switch will use as the
             derived bundle identifier value whatever value the remote
             switch has."
        DEFVAL { 0 }
        ::= { coscpLinkEntry 8 }

coscpLinkIfIndex OBJECT-TYPE
        SYNTAX        InterfaceIndex
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "The interface index identifying this link."
        ::= { coscpLinkEntry 9 }

coscpLinkSelPriority OBJECT-TYPE
        SYNTAX        Unsigned32 (0..255)
        MAX-ACCESS    read-write
        STATUS        current
        DESCRIPTION
            "This object indicates the priority with which this
             link gets selected as the active Optical Supervisory
             Channel (OSC) when multiple links are present in the same
             wavelength bundle. If selected, this link will be used to
             transmit all control and network management traffic to the
             remote switch, for the entire wavelength bundle.

             The link with the highest value of the selection priority
             is chosen by this switch to be the active OSC. Only links
             in the wavelength bundle that have coscpLinkHelloState
             value 'twoWay' are considered. If there is more than one
             link with the same highest value of the selection
             priority, the choice between these links is arbitrary. If
             it is desired to have one OSC link candidate be picked
             over another, its priority should be configured to a
             higher value than other candidate links.

             The OSCP will react to a reconfiguration of the selection
             priority according to the rules defined for the configured
             variable coscpPriorityChangeMode."
        DEFVAL { 0 }
        ::= { coscpLinkEntry 10 }

coscpLinkInHellos OBJECT-TYPE
        SYNTAX        Counter32
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object contains a count of the number of Hello
             packets received over this link."
        ::= { coscpLinkEntry 11 }

coscpLinkInDiscardedHellos OBJECT-TYPE
        SYNTAX        Counter32
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object contains a count of the number of Hello
             packets received over this link that were discarded since
             the version of the received Hello packet was outside the
             range of coscpLowestVersion to coscpHighestVersion."
        ::= { coscpLinkEntry 12 }

coscpLinkOutHellos OBJECT-TYPE
        SYNTAX        Counter32
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object contains a count of the number of Hello
             packets transmitted over this link."
        ::= { coscpLinkEntry 13 }

coscpLinkTransDown OBJECT-TYPE
        SYNTAX        Counter32
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "This object contains a count of the number of times
             this link transitioned from the 'twoWay' state to a hello
             state other than 'twoWay'."
        ::= { coscpLinkEntry 14 }

-- OSCP Bundle table

coscpBundleTable OBJECT-TYPE
        SYNTAX        SEQUENCE OF CoscpBundleEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "This table contains objects describing the wavelength
             bundles on this switch."
        ::= { ciscoOscpMIBObjects 3 }

coscpBundleEntry OBJECT-TYPE
        SYNTAX        CoscpBundleEntry
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "Each entry contains information about one wavelength
             bundle to one remote switch. The wavelength bundle is
             modeled as a single logical link (identified by
             coscpBundleIfIndex) with a single control and management
             channel. This logical link is known as the Optical
             Supervisory Channel (OSC). At any one time, only one
             wavelength in the bundle is selected to transmit the OSC
             control and network management traffic. This link is
             identified by coscpBundleActivePortId.

             The wavelength bundle must be created by a manager
             using the coscpBundleRowStatus object. Once the row has
             been activated, an interface index is assigned by the
             agent and shown in coscpBundleIfIndex. This value can then
             be used by the manager to configure control and management
             protocols, e.g. to configure the OSC's IP address.

             Aside from coscpBundleRowStatus, the other objects in the
             row are read-only, since they reflect the dynamic state of
             the wavelength bundle as determined by OSCP.

             The wavelength bundle does not become operational until at
             least one component link reaches the hello state 'twoWay',
             i.e., until at least one entry in coscpLinkTable with
             coscpLinkRemoteSwitchId value equal to the value of
             coscpBundleRemoteSwitchId and coscpLinkDerivedBundleId
             value equal to the value of coscpBundleId has
             coscpLinkHelloState value 'twoWay'. The operational status
             of the wavelength bundle is indicated by the value of
             ifOperStatus in the ifEntry with ifIndex value equal to
             the value of coscpBundleIfIndex."
        INDEX         { coscpBundleRemoteSwitchId, coscpBundleId }
        ::= { coscpBundleTable 1 }

CoscpBundleEntry ::=
        SEQUENCE {
                coscpBundleRemoteSwitchId           CoscpSwitchId,
                coscpBundleId                       CoscpBundleId,
                coscpBundleActivePortId             CoscpPortId,
                coscpBundleIfIndex                  InterfaceIndex,
                coscpBundlePortCount                Gauge32,
                coscpBundleRowStatus                RowStatus
                }

coscpBundleRemoteSwitchId OBJECT-TYPE
        SYNTAX        CoscpSwitchId
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "The switch identifier of the remote switch."
        ::= { coscpBundleEntry 1 }

coscpBundleId OBJECT-TYPE
        SYNTAX        CoscpBundleId
        MAX-ACCESS    not-accessible
        STATUS        current
        DESCRIPTION
            "The bundle identifier value used to distinguish this
             wavelength bundle from other wavelength bundles to the
             same remote switch. All entries in coscpLinkTable with the
             value of coscpLinkRemoteSwitchId equal to the value of
             coscpBundleRemoteSwitchId and with the value of
             coscpLinkDerivedBundleId equal to the value of this object
             identify links that are present in this wavelength
             bundle."
        ::= { coscpBundleEntry 2 }

coscpBundleActivePortId OBJECT-TYPE
        SYNTAX        CoscpPortId
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "The port identifier of the link currently selected as the
             active OSC. This link is used to transmit all OSC control
             and network management traffic to the remote switch, for
             the entire wavelength bundle." 
        ::= { coscpBundleEntry 3 }

coscpBundleIfIndex OBJECT-TYPE
        SYNTAX        InterfaceIndex
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "The interface index assigned by the agent to represent the
             OSC for the wavelength bundle."
        ::= { coscpBundleEntry 4 }

coscpBundlePortCount OBJECT-TYPE
        SYNTAX        Gauge32
        MAX-ACCESS    read-only
        STATUS        current
        DESCRIPTION
            "A count of the total number of component links in the
             wavelength bundle that have coscpLinkHelloState value
             'twoWay'."
        ::= { coscpBundleEntry 5 }

coscpBundleRowStatus OBJECT-TYPE
        SYNTAX        RowStatus
        MAX-ACCESS    read-create
        STATUS        current
        DESCRIPTION
            "This object is used to create a new row or to modify or
             delete an existing row in this table. Each row in the
             table must be created using this object. Once the row has
             been activated, an interface index is assigned by the
             agent and shown in coscpBundleIfIndex. This value can then
             be used by the manager to configure control and management
             protocols, e.g. to configure the OSC's IP address.

             After the row has been activated, this object cannot
             be set to any value other than 'destroy'. The row status
             never changes to 'notInService' after reaching the value
             'active'."
        ::= { coscpBundleEntry 6 }

-- OSCP notifications

ciscoOscpMIBNotifications OBJECT IDENTIFIER
        ::= { ciscoOscpMIB 2 }
ciscoOscpNotificationsPrefix OBJECT IDENTIFIER 
        ::= { ciscoOscpMIBNotifications 0 }

coscpNotifyTransDown NOTIFICATION-TYPE
        OBJECTS       { coscpLinkTransDown }
        STATUS        current
        DESCRIPTION
            "A coscpNotifyTransDown notification is sent when the
             value of an instance of coscpTransDown increments.
             This indicates that a link exited the 'twoWay' state and
             cannot be used to carry control and management traffic
             for an optical supervisory channel."
        ::= { ciscoOscpNotificationsPrefix 1 }


-- conformance information

ciscoOscpMIBConformance
                OBJECT IDENTIFIER ::= { ciscoOscpMIB 3 }
ciscoOscpMIBCompliances
                OBJECT IDENTIFIER ::= { ciscoOscpMIBConformance 1 }
ciscoOscpMIBGroups
                OBJECT IDENTIFIER ::= { ciscoOscpMIBConformance 2 }


-- compliance statements

ciscoOscpMIBCompliance MODULE-COMPLIANCE
        STATUS        current
        DESCRIPTION
            "The compliance statement for entities which implement the
             Cisco OSCP MIB."
        MODULE  -- this module
            MANDATORY-GROUPS {
                ciscoOscpBasicGroup,
                ciscoOscpNotificationsGroup
                }

            GROUP         ciscoOscpBundleGroup
            DESCRIPTION
                "Required for implementations that support bundles of
                 wavelengths to a common remote node, including dynamic
                 selection of the message channel on one wavelength to
                 carry control and management traffic for the entire
                 wavelength bundle."

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

            OBJECT        coscpPriorityChangeMode
            MIN-ACCESS    read-only
            DESCRIPTION
                "Write access and support of the 'delayed' codepoint
                 are not required."

        ::= { ciscoOscpMIBCompliances 1 }


-- units of conformance

ciscoOscpBasicGroup OBJECT-GROUP
        OBJECTS {
                coscpHighestVersion,
                coscpLowestVersion,
                coscpSwitchId,
                coscpHelloHoldDown,
                coscpHelloInterval,
                coscpHelloInactivityFactor,
                coscpNotifiesEnabled,
                coscpLinkType,
                coscpLinkVersion,
                coscpLinkHelloState,
                coscpLinkRemoteSwitchId,
                coscpLinkRemotePortId,
                coscpLinkIfIndex,
                coscpLinkInHellos,
                coscpLinkInDiscardedHellos,
                coscpLinkOutHellos,
                coscpLinkTransDown
                }
        STATUS current
        DESCRIPTION
            "A collection of cisco specific MIB objects used for
             management of OSCP."
        ::= { ciscoOscpMIBGroups 1 }

ciscoOscpBundleGroup OBJECT-GROUP
        OBJECTS {
                coscpPriorityChangeMode,
                coscpLinkDerivedBundleId,
                coscpLinkConfigBundleId,
                coscpLinkSelPriority,
                coscpBundleActivePortId,
                coscpBundleIfIndex,
                coscpBundlePortCount,
                coscpBundleRowStatus
                }
        STATUS current
        DESCRIPTION
            "A collection of cisco specific MIB objects used for
             management of wavelength bundles to a common remote node
             that are controlled by OSCP."
        ::= { ciscoOscpMIBGroups 2 }

ciscoOscpNotificationsGroup NOTIFICATION-GROUP
        NOTIFICATIONS {
                coscpNotifyTransDown 
                }
        STATUS current
        DESCRIPTION
            "A collection of cisco specific notifications used for
             management of OSCP."
        ::= { ciscoOscpMIBGroups 3 }

END
