-- ==================================================================
-- Copyright (C) 2005 by H3C TECHNOLOGIES. All rights reserved.
--
-- Description: MPLSOAM MIB
-- Reference:
-- Version: V1.0
-- History:
-- V1.0 2007-03-31 Created by Lixufu ID: 05023
-- ==================================================================
H3C-MPLSOAM-MIB DEFINITIONS ::= BEGIN

IMPORTS
        h3cCommon
    FROM HUAWEI-3COM-OID-MIB
        IpAddress, Integer32, Unsigned32, OBJECT-TYPE, MODULE-IDENTITY, 
        NOTIFICATION-TYPE
    FROM SNMPv2-SMI
        TruthValue, RowStatus, TEXTUAL-CONVENTION
    FROM SNMPv2-TC;

h3cMplsOam MODULE-IDENTITY
    LAST-UPDATED "200703310000Z"                -- March 31, 2007 at 00:00 GMT
    ORGANIZATION
        "Hangzhou H3C Tech. Co., Ltd."
    CONTACT-INFO
        "Platform Team Hangzhou H3C Tech. Co., Ltd.
        Hai-Dian District Beijing P.R. China
        http://www.h3c.com
        Zip:100085
        "
    DESCRIPTION
        "This MIB contains objects to configure OAM module.
        The Operation, Administration and Maintenance (OAM)
        is an effective means for decreasing the cost of network maintenance.
        The MPLS OAM is used to administrate and maintain MPLS."
    ::= { h3cCommon 79 }

H3cMplsOAMDefectType ::=  TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "An indication of the OAM's defect type:
        1: dServer, server layer defect;
        2: dPeerMe, peer network maintenance entity defect;
        3: dLOCV, Loss of Connectivity Verification defect;
        4: dTTSIMismatch, Trail Termination Source Identifier Mismatch defect;
        5: dTTSIMismerge, Trail Termination Source Identifier Mismerge defect;
        6: dExcess, receiving excess rate of CV/FFD;
        7: dUnknown, unknown defect in the MPLS network..
        8: rlsn down;
        9: dLspDown;
        10: MPLS OAM ME;
        11: no defect."
    SYNTAX      INTEGER
        {
            dServer(1),
            dPeerMe(2),
            dLOCV(3),
            dTTSIMismatch(4),
            dTTSIMismerge(5),
            dExcess(6),
            dUnknown(7),
            dRlsnDown(8),
            dLspDown(9),
            dME(10),
            noDefect(11)
        }

H3cMplsOAMDetectFreq ::=  TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "An indication of the OAM's frequent type( ITU-T: Y.1711(0402) ):
        For CV: the frequency is static. The value is 1/s.
        For FFD: the frequency is set by user. The value
        can be 10ms, 20ms, 50ms, 100ms, 200ms, 500ms.
        Any other frequency is wrong.
        1: 10ms;
        2: 20ms;
        3: 50ms;
        4: 100ms;
        5: 200ms;
        6: 500ms;
        7: 1000ms(only for cv)."
    SYNTAX      INTEGER
        {
            ffd10ms(1),
            ffd20ms(2),
            ffd50ms(3),
            ffd100ms(4),
            ffd200ms(5),
            ffd500ms(6),
            cv1000ms(7)
        }

-- ==================================================================
--
-- ======================= definition begin =========================
--
-- ==================================================================
h3cMplsOamScalarGroup OBJECT IDENTIFIER ::= { h3cMplsOam 1 }

h3cMplsOamCapability OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Whether OAM is globally capable.
        false: incapable;
        true: capable;
        The default value is incapable."
    DEFVAL  { false }
    ::= { h3cMplsOamScalarGroup 1 }

h3cMplsOamTrapOpen OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Whether OAM trap is globally enabled.
        false: disable;
        true: enable;
        The default value is disable."
    DEFVAL  { false }
    ::= { h3cMplsOamScalarGroup 2 }

h3cMplsOamTable OBJECT IDENTIFIER ::= { h3cMplsOam 2 }

h3cMplsOamIgrTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cMplsOamIgrEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table specifies per-LSP MPLS OAM ingress capability and
        associated information, such as IgrLspName and IgrDetType."
    ::= { h3cMplsOamTable 1 }

h3cMplsOamIgrEntry OBJECT-TYPE
    SYNTAX      H3cMplsOamIgrEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in this table is created by an LSR for every LSP
        capable of supporting MPLS OAM at ingress."
    INDEX
        {
            h3cMplsOamIgrIndex
        }
    ::= { h3cMplsOamIgrTable 1 }

H3cMplsOamIgrEntry ::= SEQUENCE
    {
        h3cMplsOamIgrIndex         Unsigned32,
        h3cMplsOamIgrLspName       OCTET STRING,
        h3cMplsOamIgrDetectType    INTEGER,
        h3cMplsOamIgrDetectFreq    H3cMplsOAMDetectFreq,
        h3cMplsOamIgrRevType       INTEGER,
        h3cMplsOamIgrRevLspName    OCTET STRING,
        h3cMplsOamIgrLspId         Integer32,
        h3cMplsOamIgrEnable        TruthValue,
        h3cMplsOamIgrDefectType    H3cMplsOAMDefectType,
        h3cMplsOamIgrRowStatus     RowStatus
    }

h3cMplsOamIgrIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is an unique index for an OAM ingress entry in the OAM table."
    ::= { h3cMplsOamIgrEntry 1 }

h3cMplsOamIgrLspName OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The name of an LSP.
        It means the LSP name of the detected LSP."
    ::= { h3cMplsOamIgrEntry 2 }

h3cMplsOamIgrDetectType OBJECT-TYPE
    SYNTAX      INTEGER
        {
            cv(1),
            ffd(2)
        }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "There are two types of OAM packets, CV and FFD.
        The CV flow is generated at the source LSR of the LSP with
        a nominal frequency of 1/s and terminated at the sink LSR of the LSP.
        FFD provides failure detection option for an LSP independent
        of the CV based availability model and is not tied to the
        CV insertion rate. Insertion rates at 1/s or faster may
        also be used.
        The CV/FFD packet contains a network-unique identifier (TTSI)
        so that all types of defects can be detected.
        1: CV;
        2: FFD."
    ::= { h3cMplsOamIgrEntry 3 }

h3cMplsOamIgrDetectFreq OBJECT-TYPE
    SYNTAX      H3cMplsOAMDetectFreq
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indication of the OAM's frequent type."
    ::= { h3cMplsOamIgrEntry 4 }

h3cMplsOamIgrRevType OBJECT-TYPE
    SYNTAX      INTEGER
        {
            private(1),
            share(2)
        }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When an LSP is found to be in defect, the sink LSR of the LSP
        should send BDI to inform the source LSR of the LSP, the BDI is
        transferred through the reverse LSP.
        The type of reverse LSP can be private or shared.
        If private, then the reverse LSP can be used only by the oam ingress;
        If shared, the reverse LSP which is shared between many forward
        LSPs, whose source LSRs are the same and sink LSRs are the same.
        1: private;
        2: share."
    ::= { h3cMplsOamIgrEntry 5 }

h3cMplsOamIgrRevLspName OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The object indicates the name of the reverse LSP."
    ::= { h3cMplsOamIgrEntry 6 }

h3cMplsOamIgrLspId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "For ingress, the object indicates the lsp ID of
        the detected LSP."
    ::= { h3cMplsOamIgrEntry 7 }

h3cMplsOamIgrEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Whether one LSP is OAM enable.
        If disable, LSP is not monitored;
        If enable, CV/FFD is generated at the source LSR of the LSP and
        checked at the sink LSR of the LSP, and user can set
        other configuration.
        false: The OAM function is disabled on the ingress;
        true: The OAM function is enabled on the ingress."
    DEFVAL  { false }
    ::= { h3cMplsOamIgrEntry 8 }

h3cMplsOamIgrDefectType OBJECT-TYPE
    SYNTAX      H3cMplsOAMDefectType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indication of the OAM's defect type."
    ::= { h3cMplsOamIgrEntry 9 }

h3cMplsOamIgrRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object is responsible for managing the creation,
        deletion and modification of rows, which support active
        status and CreatAndGo, destroy operation.
        To create a new row, h3cMplsOamIgrLspName, h3cMplsOamIgrDetectType,
        h3cMplsOamIgrDetectFreq, h3cMplsOamIgrRevType, h3cMplsOamIgrRevLspName,
        and h3cMplsOamIgrLspId must be specified."
    ::= { h3cMplsOamIgrEntry 10 }

h3cMplsOamEgrTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cMplsOamEgrEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table specifies per-LSP MPLS OAM capability and
        associated information, such as DetectType, DetectFrequency."
    ::= { h3cMplsOamTable 2 }

h3cMplsOamEgrEntry OBJECT-TYPE
    SYNTAX      H3cMplsOamEgrEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "An entry in this table is created by an LSR for every LSP
        capable of supporting MPLS OAM at egress."
    INDEX
        {
            h3cMplsOamEgrIndex
        }
    ::= { h3cMplsOamEgrTable 1 }

H3cMplsOamEgrEntry ::= SEQUENCE
    {
        h3cMplsOamEgrIndex         Unsigned32,
        h3cMplsOamEgrLspName       OCTET STRING,
        h3cMplsOamEgrDetectType    INTEGER,
        h3cMplsOamEgrDetectFreq    H3cMplsOAMDetectFreq,
        h3cMplsOamEgrRevType       INTEGER,
        h3cMplsOamEgrRevLspName    OCTET STRING,
        h3cMplsOamEgrLsrId         IpAddress,
        h3cMplsOamEgrLspId         Integer32,
        h3cMplsOamEgrEnable        TruthValue,
        h3cMplsOamEgrDefectType    H3cMplsOAMDefectType,
        h3cMplsOamEgrRowStatus     RowStatus
    }

h3cMplsOamEgrIndex OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This is a unique index for an OAM egress entry in the OAM table."
    ::= { h3cMplsOamEgrEntry 1 }

h3cMplsOamEgrLspName OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The object indicates the name of static LSP at egress."
    ::= { h3cMplsOamEgrEntry 2 }

h3cMplsOamEgrDetectType OBJECT-TYPE
    SYNTAX      INTEGER
        {
            cv(1),
            ffd(2)
        }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "There are two types of OAM packets, CV and FFD.
        The CV flow is generated at the source LSR of the LSP with
        a nominal frequency of 1/s and terminated at the sink LSR of the LSP.
        FFD provides failure detection option for an LSP independent
        of the CV based availability model and is not tied to the
        CV insertion rate. Insertion rates at 1/s or faster may
        also be used.
        The CV/FFD packet contains a network-unique identifier (TTSI)
        so that all types of defects can be detected.
        1: CV;
        2: FFD."
    ::= { h3cMplsOamEgrEntry 3 }

h3cMplsOamEgrDetectFreq OBJECT-TYPE
    SYNTAX      H3cMplsOAMDetectFreq
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Indication of the OAM's frequent type."
    ::= { h3cMplsOamEgrEntry 4 }

h3cMplsOamEgrRevType OBJECT-TYPE
    SYNTAX      INTEGER
        {
            private(1),
            share(2)
        }
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "When an LSP is found to be in defect, the sink LSR of the LSP
        should send BDI to inform the source LSR of the LSP, the BDI is
        transferred through the reverse LSP.
        The type of reverse LSP can be private or shared.
        If private, then the reverse LSP can be used only when the only
        LSP in defect;
        If shared, the reverse LSP, which is shared between many forward
        LSPs that have the same source LSRs and sink LSRs.
        1: private;
        2: share."
    ::= { h3cMplsOamEgrEntry 5 }

h3cMplsOamEgrRevLspName OBJECT-TYPE
    SYNTAX      OCTET STRING
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The object indicates the name of a reverse static-lsp."
    ::= { h3cMplsOamEgrEntry 6 }

h3cMplsOamEgrLsrId OBJECT-TYPE
    SYNTAX      IpAddress
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The object indicates the Ingress LSR ID of the LSP."
    ::= { h3cMplsOamEgrEntry 7 }

h3cMplsOamEgrLspId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The object indicates the the Ingress session lsp ID of the
        detected static-LSP."
    ::= { h3cMplsOamEgrEntry 8 }

h3cMplsOamEgrEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Whether one LSP is enabled with OAM.
        If disable, LSP is not monitored;
        If enable, CV/FFD is generated at the source LSR of the LSP and
        checked at the sink LSR of the LSP, and user can set
        other configuration.
        false: The OAM function is disabled on the egress;
        true: The OAM function is enabled on the egress."
    DEFVAL  { false }
    ::= { h3cMplsOamEgrEntry 9 }

h3cMplsOamEgrDefectType OBJECT-TYPE
    SYNTAX      H3cMplsOAMDefectType
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Indication of the OAM's defect type."
    ::= { h3cMplsOamEgrEntry 10 }

h3cMplsOamEgrRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "This object is responsible for managing the creation,
        deletion and modification of rows, which support active
        status and CreatAndGo, destroy operation.
        To create a new row, h3cMplsOamEgrLspName, h3cMplsOamEgrDetectType,
        h3cMplsOamEgrDetectFreq, h3cMplsOamEgrRevType, h3cMplsOamEgrRevLspName,
        h3cMplsOamEgrLsrId and h3cMplsOamEgrLspId must be specified."
    ::= { h3cMplsOamEgrEntry 11 }

h3cMplsOamNotifications OBJECT IDENTIFIER ::= { h3cMplsOam 3 }

h3cMplsOamIgrLSPOutDefect NOTIFICATION-TYPE
    OBJECTS
        {
            h3cMplsOamIgrLspName,
            h3cMplsOamIgrDefectType
        }
    STATUS      current
    DESCRIPTION
        "This notification is generated when the LSP is found
        out of the defect state at the LSP ingress."
    ::= { h3cMplsOamNotifications 1 }

h3cMplsOamIgrLSPInDefect NOTIFICATION-TYPE
    OBJECTS
        {
            h3cMplsOamIgrLspName,
            h3cMplsOamIgrDefectType
        }
    STATUS      current
    DESCRIPTION
        "This notification is generated when the LSP is found
        in the defect state at the LSP ingress."
    ::= { h3cMplsOamNotifications 2 }

h3cMplsOamEgrLSPOutDefect NOTIFICATION-TYPE
    OBJECTS
        {
            h3cMplsOamEgrLspName,
            h3cMplsOamEgrDefectType
        }
    STATUS      current
    DESCRIPTION
        "This notification is generated when the LSP is found
        out of the defect state at the LSP egress."
    ::= { h3cMplsOamNotifications 3 }

h3cMplsOamEgrLSPInDefect NOTIFICATION-TYPE
    OBJECTS
        {
            h3cMplsOamEgrLspName,
            h3cMplsOamEgrDefectType
        }
    STATUS      current
    DESCRIPTION
        "This notification is generated when the LSP is found
        in the defect state at the LSP egress."
    ::= { h3cMplsOamNotifications 4 }

END
