--  =======================================================================
--  File        : oaprtlin.mib
--  Description : Private MIB for Port Link Reflection (LIN) parameters 
--  By          : Alex & Yakov
--  Version     : 0.2
--  Date        : 
--  =======================================================================

-- Copyright (c) 2007 MRV.  All Rights Reserved.
--
--
-- Reproduction of this document is authorized on condition that this
-- copyright notice is included.  This MRV SNMP MIB Specification
-- embodies MRV's proprietary intellectual property.  MRV
-- retains all title and ownership in the specification, including any
-- revisions.
--
-- It is MRV's intent to encourage the widespread use of this
-- specification in connection with the management of MRV's
-- products. MRV grants vendor, end-users, and other interested
-- parties a non-exclusive license to use this specification in
-- connection with the management of MRV's products.
--
-- This specification is supplied "AS IS," and MRV makes no
-- warranty, either express or implied, as to the use, operation,
-- condition, or performance of the specification.
--
-- Copyright text courtesy of MRV
--
-- If you have any questions about this MIB, please call MRV
-- Technical Support Center at 1-800-858-7815 from inside USA or
-- 1-818-773-0900 from outside USA.
--
--
-- MRV retains the right to change this MIB without notification.

OA-PORT-LIN-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE,
    NOTIFICATION-TYPE, enterprises,
    Integer32, Unsigned32                FROM SNMPv2-SMI    -- RFC2578
    DisplayString                        FROM SNMPv2-TC
    nbSwitchG1Il                         FROM OS-COMMON-TC-MIB
    NOTIFICATION-GROUP, OBJECT-GROUP,
    MODULE-COMPLIANCE                    FROM SNMPv2-CONF;  -- RFC2580

nbPortLinkReflection  MODULE-IDENTITY
    LAST-UPDATED "201103160000Z"  -- Nov 02, 2010
    ORGANIZATION "MRV Communications, Inc."
    CONTACT-INFO
        "Edna Ganon
         MRV Communication, Inc
         http://www.mrv.com
         Email:  eganon@mrv.com

         Inna Levin
         MRV Communication, Inc
         http://www.mrv.com
         Email:  ilevin@mrv.com

         Yakov Vaisman
         MRV Communication, Inc
         http://www.mrv.com
         Email:  yvaisman@mrv.com
        "

    DESCRIPTION
        "Supports information about
         Port Link Reflection (LIN)."

    -- Revision history

    REVISION "201103160000Z"  -- Mar 16, 2011
    DESCRIPTION
     "Revision 0.4: 
      Object oaPortLinAgRMepStatus description is fixed.
      "

    REVISION "201011020000Z"  -- Nov 02, 2010
    DESCRIPTION
     "Revision 0.3: 
      1. Object oaPortLinLastError is added.
      2. Object oaPortLinAgDomainId type is fixed.
      "

    REVISION "200712110000Z"  -- Dec 11, 2007
    DESCRIPTION
        "Revision 0.2: MIB Objects [oaPortLinAgTable],
         [oaPortLinAgSupport], [oaPortLinActionCause]
         [oaPortLinStateUp] and [oaPortLinStateDown] Traps
         declarations added."

    REVISION "200708020000Z"  -- Aug  2, 2007
    DESCRIPTION
        "Revision 0.1: Initial edition."

    ::= { nbPortParams 11 }

-- ************************************************************
-- MRV Object Identifier Definition
-- ************************************************************

-- GROUPS for Port Configuration Parameters
nbPortParams                  OBJECT IDENTIFIER ::= { nbSwitchG1Il 10 }

oaPortLinNotifications        OBJECT IDENTIFIER ::= { nbPortLinkReflection 0 }
oaPortLinGen                  OBJECT IDENTIFIER ::= { nbPortLinkReflection 1 }
oaPortLinGrp                  OBJECT IDENTIFIER ::= { nbPortLinkReflection 2 }

oaPortLinConformance          OBJECT IDENTIFIER ::= { nbPortLinkReflection 101 }

-- ************************************************************************
-- Objects for Port Link Reflection (LIN) General group
-- ************************************************************************

oaPortLinGenSupport OBJECT-TYPE
    SYNTAX  INTEGER {
       notSupported (1),
       supported    (2)
    }       
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "Port Link Reflection (LIN) feature support."

    ::= { oaPortLinGen 1 }

oaPortLinAgSupport OBJECT-TYPE
    SYNTAX  INTEGER {
       notSupported (1),
       supported    (2)
    }       
    MAX-ACCESS  read-only
    STATUS  current
    DESCRIPTION
    "LIN may use the IEEE 802.1ag."

    ::= { oaPortLinGen 2 }

oaPortLinLastError   OBJECT-TYPE
    SYNTAX           DisplayString (SIZE (2..160))
    MAX-ACCESS       read-only
    STATUS           current
    DESCRIPTION
       "Last configuration error description."
    ::= { oaPortLinGen 3 }

-- ************************************************************
-- Objects in the Port Link Reflection (LIN) Table
-- ************************************************************

oaPortLinTable    OBJECT-TYPE
    SYNTAX  SEQUENCE OF OaPortLinEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
    "This table configures Port Link Reflection (LIN).
     Each LIN describes the bind between the
     Uplink (Master) Port and the Group of Downlink (Slave) Ports.
    "
    ::= { oaPortLinGrp 1 }

oaPortLinEntry OBJECT-TYPE
    SYNTAX       OaPortLinEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
    "Port Link Reflection (LIN) table entry."

    INDEX { oaPortLinId }

    ::= { oaPortLinTable 1 }

OaPortLinEntry ::= SEQUENCE {
    oaPortLinId                Integer32,
    oaPortLinOperStatus        INTEGER,
    oaPortLinAdminStatus       INTEGER,
    oaPortLinSlavePorts        OCTET STRING,
    oaPortLinSymmetricStatus   INTEGER,
    oaPortLinActionCause       INTEGER
    }

oaPortLinId    OBJECT-TYPE
    SYNTAX Integer32 (1..255)
    MAX-ACCESS   not-accessible
    STATUS  current
    DESCRIPTION
    "The index of the Port Link Reflection (LIN) Table.
     It includes all Ports, excluding Ports that are
     the members of the Trunks built in the device.
     In the OS300 devices the Trunk Ports can not
     be an Uplink (Master) ports.
     In the other devices the Trunk Ports can be
     an Uplink (Master) ports too. Trunks appear in the
     table with the value equal to ( 132 + [oaDevTrunkGrId] )."

    ::= { oaPortLinEntry 1 }

oaPortLinOperStatus    OBJECT-TYPE
    SYNTAX       INTEGER {
       none     (1),
       master   (2),
       slave    (3)
    }
    MAX-ACCESS   read-only
    STATUS       current
    DESCRIPTION
    "Port Link Reflection (LIN) Oper Status:
     'none' - means that Port does not take part in any LIN entry.
     'master' - port takes part as a Uplink (Master) in the current LIN entry.
     'slave' - port takes part as a Slave in some LIN entry."

    ::= { oaPortLinEntry 2 }

oaPortLinAdminStatus    OBJECT-TYPE
    SYNTAX       INTEGER {
       valid    (1),
       invalid  (2)
    }
    MAX-ACCESS   read-write
    STATUS  current
    DESCRIPTION
    "Port Link Reflection (LIN) Admin Status.
     Value 'valid' used for LIN entry creation.
                   [oaPortLinId] port became LIN 'master' and
                   [oaPortLinSlavePorts] ports became
                   LIN 'slave'.
     Value 'invalid' - used for LIN entry deletion.
                   [oaPortLinId] port became LIN 'none' and
                   all Ports listed in the [oaPortLinSlavePorts]
                   became LIN 'none' too."

    ::= { oaPortLinEntry 3 }

oaPortLinSlavePorts    OBJECT-TYPE
    SYNTAX     OCTET STRING (SIZE (0..255))
    MAX-ACCESS read-write
    STATUS     current
    DESCRIPTION
    "List of Slave Ports in the Link Reflection (LIN) entry.
     Each octet contains the corresponding number of Port or Trunk
     [order: from first up to last].
     Trunks appear in the List of Ports with the value equal to
     ( 132 + [oaDevTrunkGrId] )."

    ::= { oaPortLinEntry 4 }

oaPortLinSymmetricStatus    OBJECT-TYPE
    SYNTAX       INTEGER {
       other        (1),
       symmetric    (2),
       nonSymmetric (3)
    }
    MAX-ACCESS   read-write
    STATUS       current
    DESCRIPTION
    "Port Link Reflection (LIN) Symmetric Status.
     Have a sense only for created LIN entry with
     [oaPortLinOperStatus] - 'master' (for OS300 devices -
     'nonSymmetric' only).
     For entries having [oaPortLinOperStatus] - 'none' or 'slave',
     responds with 'other'."

    ::= { oaPortLinEntry 5 }

oaPortLinActionCause  OBJECT-TYPE
    SYNTAX             INTEGER {
       noAction           (1),
       portLinkUp         (2),
       portLinkDown       (3),
       agRMepDiscardEvent (4),
       agRMepNoConnEvent  (5),
       agRMepAliveEvent   (6)
    }
    MAX-ACCESS read-only
    STATUS	current
    DESCRIPTION
    "The causes of last LIN action are:
     [portLinkDown] - Slave Ports [oaPortLinSlavePorts] are Down because
                      the Master port [oaPortLinId] became Down now.
     [portLinkUp]   -  Slave Ports [oaPortLinSlavePorts] are Up because
                      the Master port [oaPortLinId] became Up now.
     [agRMepDiscardEvent] - Slave Ports [oaPortLinSlavePorts] are Down because
                      the Master port [oaPortLinId] received 'Remote Mep Discard Event'.
     [agRMepNoConnEvent] - Slave Ports [oaPortLinSlavePorts] are Down because
                      the Master port [oaPortLinId] received 'No connection to Remote Mep Event'.
     [agRMepAliveEvent] - Slave Ports [oaPortLinSlavePorts] are Up because
                      the Master port [oaPortLinId] received 'Remote Mep Alive Event'."

    ::= { oaPortLinEntry 6 }

-- *******************************************************************
-- Objects in the Table describing the association of the Remote Meps
-- with the corresponding LIN Entry.
-- *******************************************************************

oaPortLinAgTable    OBJECT-TYPE
    SYNTAX  SEQUENCE OF OaPortLinAgEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
    "This table describes the association of the
     corresponding LIN with the Remote Meps.
    "
    ::= { oaPortLinGrp 5 }

oaPortLinAgEntry OBJECT-TYPE
    SYNTAX       OaPortLinAgEntry
    MAX-ACCESS   not-accessible
    STATUS       current
    DESCRIPTION
    "Port Link Reflection (LIN) AG table entry."

    INDEX { oaPortLinId,
            oaPortLinAgDomainId,
            oaPortLinAgAssociationId,
            oaPortLinAgRemoteMep }

    ::= { oaPortLinAgTable 1 }

OaPortLinAgEntry ::= SEQUENCE {
    oaPortLinAgDomainId        Unsigned32,
    oaPortLinAgAssociationId   Unsigned32,
    oaPortLinAgRemoteMep       Unsigned32,
    oaPortLinAgRMepStatus      INTEGER,
    oaPortLinAgAdminStatus     INTEGER
    }

oaPortLinAgDomainId    OBJECT-TYPE
    SYNTAX Unsigned32 (0..7)
    MAX-ACCESS   not-accessible
    STATUS  current
    DESCRIPTION
    "The Maintainance Domain Id of the Remote Mep."

    ::= { oaPortLinAgEntry 2 }

oaPortLinAgAssociationId    OBJECT-TYPE
    SYNTAX Unsigned32 (1..4294967295)
    MAX-ACCESS   not-accessible
    STATUS  current
    DESCRIPTION
    "The Maintainance Association Id of the Remote Mep."

    ::= { oaPortLinAgEntry 3 }

oaPortLinAgRemoteMep    OBJECT-TYPE
    SYNTAX Unsigned32 (1..8192)
    MAX-ACCESS   not-accessible
    STATUS  current
    DESCRIPTION
    "The Remote Mep Id associated with the LIN Entry.
     8192 - means all existing Meps."

    ::= { oaPortLinAgEntry 4 }

oaPortLinAgRMepStatus    OBJECT-TYPE
    SYNTAX       INTEGER {
       normal       (1),
       discard      (2),
       noConnection (3)
    }
    MAX-ACCESS   read-only
    STATUS  current
    DESCRIPTION
    "The Remote Mep connectivity Status:     
       normal       (1),       - switch receives CCMs from the RMEP and RMEP's port is UP
       discard      (2),       - switch receives CCMs from the RMEP but RMEP's port is DOWN
       noConnection (3)        - switch doesn't receive CCMs from the RMEP
    "
    ::= { oaPortLinAgEntry 8 }

oaPortLinAgAdminStatus    OBJECT-TYPE
    SYNTAX       INTEGER {
       valid    (1),
       invalid  (2)
    }
    MAX-ACCESS   read-write
    STATUS  current
    DESCRIPTION
    "Port Link Reflection (LIN) Admin Status.
     Value 'valid' used for entry creation.
     Value 'invalid' - used for LIN entry deletion."

    ::= { oaPortLinAgEntry 10 }

-- *******************************************************************
--  Conformance Information 
-- ******************************************************************* 
 
oaPortLinCompliances  OBJECT IDENTIFIER ::= { oaPortLinConformance 1 }
oaPortLinGroups       OBJECT IDENTIFIER ::= { oaPortLinConformance 2 }

-- *******************************************************************
--  Compliance Information
-- ******************************************************************* 
 
oaPortLinCompliance   MODULE-COMPLIANCE
    STATUS current 
    DESCRIPTION 
    "The core compliance statement for all
     'nbPortLinkReflection' MIB implementations."

    MODULE -- this module

    MANDATORY-GROUPS { 
                      oaPortLinMandatoryGroup,
                      oaPortLinNotificationsGroup
                     }

    GROUP             oaPortLinTrapParamsGroup
    DESCRIPTION
            "This group includes MIB Objects coming with SNMP Traps."


    GROUP             oaPortLinGroup
    DESCRIPTION
            "This group includes not mandatory MIB Objects."

    ::= { oaPortLinCompliances 1 }

-- ...................................................................
-- Conformance Groups 
-- ................................................................... 
 
oaPortLinMandatoryGroup  OBJECT-GROUP
    OBJECTS { 
             oaPortLinGenSupport,
             oaPortLinAgSupport,

--             oaPortLinId,
             oaPortLinOperStatus,
             oaPortLinAdminStatus,
             oaPortLinSlavePorts,
             oaPortLinSymmetricStatus,
             oaPortLinLastError
            }
    STATUS current 
    DESCRIPTION 
    "Mandatory objects for grouping of Port Link Reflection (LIN) parameters."
    ::= { oaPortLinGroups 1 }

oaPortLinTrapParamsGroup  OBJECT-GROUP
    OBJECTS { 
             oaPortLinActionCause
            }
    STATUS current 
    DESCRIPTION 
    "Mandatory group of the Port Link Reflection (LIN) SNMP Trap parameters."
    ::= { oaPortLinGroups 2 }

oaPortLinGroup  OBJECT-GROUP
    OBJECTS { 
--             oaPortLinAgDomainId,
--             oaPortLinAgAssociationId,
--             oaPortLinAgRemoteMep,

             oaPortLinAgRMepStatus,
             oaPortLinAgAdminStatus
            }
    STATUS current 
    DESCRIPTION 
    "Not Mandatory objects for grouping of Port Link Reflection (LIN) parameters."
    ::= { oaPortLinGroups 3 }

oaPortLinNotificationsGroup   NOTIFICATION-GROUP
    NOTIFICATIONS {
             oaPortLinStateUp,
             oaPortLinStateDown
            }
    STATUS  current
    DESCRIPTION
            "The Notifications which are required to be supported by
             implementations of this MIB."
    ::= { oaPortLinGroups 4 }

-- *******************************************************************
--  Notification Definition section
-- ******************************************************************* 
 
oaPortLinStateUp NOTIFICATION-TYPE
    OBJECTS { oaPortLinSlavePorts,
              oaPortLinActionCause
            }
    STATUS  current
    DESCRIPTION
    "The SNMP trap that is generated when Dependent ports 
     [oaPortLinSlavePorts] Link State became Up.
     as result of link reflection only.
     It should not be sent, when port became Up by 
     physical connection or CLI command 'port state enable' -
     unlike standard LinkUp.
     In the case of [oaPortLinSymmetricStatus]='nonSymmetric'
     the Dependent ports are indeed the LIN Slave ports.
     But in the case of [oaPortLinSymmetricStatus]='symmetric'
     the Dependent ports list has only one port which can be
     Master port or Slave port, because in this case these both
     ports are equivalent.
    "

    ::= { oaPortLinNotifications 33 }

oaPortLinStateDown NOTIFICATION-TYPE
    OBJECTS { oaPortLinSlavePorts,
              oaPortLinActionCause
            }
    STATUS  current
    DESCRIPTION
    "The SNMP trap that is generated when Dependent ports
     [oaPortLinSlavePorts] Link State became Down as result of
     link reflection only.
     It should not be sent, when port became Down by
     physical disconnection or CLI command 'port state disable' -
     unlike standard LinkDown.
     In the case of [oaPortLinSymmetricStatus]='nonSymmetric'
     the Dependent ports are indeed the LIN Slave ports.
     But in the case of [oaPortLinSymmetricStatus]='symmetric'
     the Dependent ports list has only one port which can be
     Master port or Slave port, because in this case these both
     ports are equivalent.
    "

    ::= { oaPortLinNotifications 35 }

END

