-- =====================================================================
-- Copyright (c) 2004-2012 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description: Device link detection protocol (DLDP) MIB.
-- Device Link Detection Protocol is private Layer2 protocol,
-- which is used for automatically detecting unidirectional link to
-- prevent a loop communication.
-- Reference:
-- Version: V1.2
-- History:
-- V1.0 2004-12-13 created by tangshun
-- V1.1 2006-11-24 modify SYNTAX and DEFVAL of h3cDLDPInterval by yubo
-- V1.2 2011-11-23 modify SYNTAX and DESCRIPTION of
--                 h3cDLDPAuthenticationPassword by zhangwei
-- =====================================================================
H3C-DLDP-MIB DEFINITIONS ::= BEGIN
IMPORTS
    TruthValue, MacAddress, TEXTUAL-CONVENTION
        FROM SNMPv2-TC
    MODULE-IDENTITY, OBJECT-TYPE, Counter32, Integer32, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    ifIndex
        FROM RFC1213-MIB
    h3cCommon
        FROM HUAWEI-3COM-OID-MIB;

-- ==================================================================
--
-- module identity part
--
-- ==================================================================
h3cDldp MODULE-IDENTITY
    LAST-UPDATED
        "200412130000Z"
    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 "DLDP (Device Link Detection Protocol) MIB"
    REVISION
        "200412130000Z"
    DESCRIPTION
        "The initial version of this MIB module."
    ::= { h3cCommon 43 }

-- ==================================================================
-- Textual Conventions
-- ==================================================================
EnabledStatus ::=  TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The current state of the Ethernet port.
        This object has two defined values:
        - 'enabled', which indicates that the Ethernet port enables DLDP.
        - 'disabled', which indicates that the Ethernet port does not enable DLDP.
        "
    SYNTAX      INTEGER
        {
            enabled(1),
            disabled(2)
        }


DLDPStatus ::=  TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "Operating state of DLDP on the port.
        This object has six defined values:
        - 'initial', which indicates that the Ethernet port does not enable DLDP.
        This status does not appear in the 'h3cDLDPPortDLDPState' object (below)
        because the port which is not enabled DLDP does not appear in
        'h3cDLDPPortDLDPTable', it appears in 'h3cDLDPPortStateTable'.
        - 'inactive', which indicates that the Ethernet port enables DLDP and
        the link status of the port is down.
        - 'active', which indicates that the Ethernet port enables DLDP and
        the link status of the port is up.
        - 'advertisement', which indicates that all neighbors of the port are
        bidirectional communication.
        - 'probe', which indicates that the port sends PDU to detect
        the communication mode between it and it's neighbors.
        - 'disable', which indicates that an unidirectional communication
        between the port and it's neighbor.

        When the user get or walk the 'h3cDLDPPortDLDPState' objects (below)
        these status will output."
    SYNTAX      INTEGER
        {
            initial(1),
            inactive(2),
            active(3),
            advertisement(4),
            probe(5),
            disable(6)
        }


DLDPNeighborStatus ::=  TEXTUAL-CONVENTION
    STATUS      current
    DESCRIPTION
        "The current state of the neighbor of a port.
        This object has three defined values:
        - 'unidirection', which indicates an unidirectional communication
        between the port and it's neighbor.
        - 'bidirection', which indicates a bidirectional communication
        between the port and it's neighbor.
        - 'unknown', which indicates that the port does not know
        the communication mode between it and it's neighbor.

        When the user get or walk the 'h3cDLDPNeighborState' objects (below)
        these status will output. "
    SYNTAX      INTEGER
        {
            unidirection(1),
            bidirection(2),
            unknown(3)
        }

-- ==================================================================
--
-- =====================object definition begin======================
--
-- ==================================================================
h3cDLDPMibObject        OBJECT IDENTIFIER ::= { h3cDldp 1 }
h3cDLDPConfigGroup      OBJECT IDENTIFIER ::= { h3cDLDPMibObject 1 }

h3cDLDPWorkMode OBJECT-TYPE
    SYNTAX      INTEGER
        {
            normal(1),
            enhance(2)
        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The work mode of DLDP.
        Normal mode means DLDP does not detect neighbor on its own initiative
        when all neighbors aged.
        Enhance mode means DLDP detects neighbor on its own initiative
        when all neighbors aged.
        "
    DEFVAL          { normal }
    ::= { h3cDLDPConfigGroup 1 }

h3cDLDPSystemEnable OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "DLDP enable or disable systematically.
        This node only supports set operation.
        If setting it to true, all the fiber ports will enable DLDP and
        the agent automatically creates new rows for each port in
        h3cDLDPPortDLDPTable.
        If setting it to false, all the fiber ports will disable DLDP
        and the agent automatically destroy the corresponding rows in
        h3cDLDPPortDLDPTable."
    ::= { h3cDLDPConfigGroup 2 }

h3cDLDPSystemReset OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "DLDP reset systematically.
        This node only supports set operation.
        If the value of h3cDLDPSystemReset is true,
        and the current state is disable,
        it will change to inactive while the port is down
        or active while the port is up.
        If h3cDLDPPortDLDPState is not disable, it does not change.
        "
    ::= { h3cDLDPConfigGroup 3 }

h3cDLDPInterval OBJECT-TYPE
    SYNTAX      INTEGER(1..100)
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The interval of sending an advertisement PDU.
        unit : second
        "
    DEFVAL          { 5 }
    ::= { h3cDLDPConfigGroup 4 }

h3cDLDPAuthenticationMode OBJECT-TYPE
    SYNTAX      INTEGER
        {
            none(1),        --DLDP exchanges are not authenticated.
            simple(2),      --DLDP exchanges are authenticated by a clear text password.
            md5(3)          --DLDP exchanges are authenticated by a MD5 digest.

        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "Type of authentication mode."
    DEFVAL          { none }
    ::= { h3cDLDPConfigGroup 5 }

h3cDLDPAuthenticationPassword OBJECT-TYPE
    SYNTAX      OCTET STRING(SIZE(1..53))
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "This is the password for authentication.
        If the value of h3cDLDPAuthenticationMode is null,
        the user cannot set this node.
        If the value of h3cDLDPAuthenticationMode is simple or MD5,
        the user must set this node with a string.

        When the user gets or walks this node,
        it displays a cipher password if h3cDLDPAuthenticationMode is MD5 or
        simple or a zero-length string if h3cDLDPAuthenticationMode is null.
        "
    ::= { h3cDLDPConfigGroup 6 }

h3cDLDPUnidirectionalShutdown OBJECT-TYPE
    SYNTAX      INTEGER
        {
            auto(1),
            manual(2)
        }
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "The mode of unidirectional shutdown.
        It indicates the shutdown mode when a unidirectional link happened.
        Auto mode means the port will be shut down automatically
        when DLDP detects unidirectional link.
        Manual mode means the port needs to be shut down by
        the administrator manually when DLDP detects unidirectional link.
        "
    DEFVAL  { auto }
    ::= { h3cDLDPConfigGroup 7 }

--h3cDLDPPortStateTable--
h3cDLDPPortStateTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cDLDPPortStateEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The table of the Ethernet ports of a LAN switch."
    ::= { h3cDLDPMibObject 2 }

h3cDLDPPortStateEntry OBJECT-TYPE
    SYNTAX      H3cDLDPPortStateEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a h3cDLDPPortDLDPTable entity."
    INDEX
        {
            ifIndex
        }
    ::= { h3cDLDPPortStateTable 1 }

H3cDLDPPortStateEntry ::= SEQUENCE
    {
        h3cDLDPPortState    EnabledStatus
    }

h3cDLDPPortState OBJECT-TYPE
    SYNTAX      EnabledStatus
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "State of a port.
        If setting it to enabled, the port will enable DLDP and a new row
        will be added in h3cDLDPPortDLDPTable for this port.
        If setting it to disabled, the port will disable DLDP and the
        corresponding row will be destroyed in h3cDLDPPortDLDPTable."
    DEFVAL          { disabled }
    ::= { h3cDLDPPortStateEntry 1 }

--h3cDLDPPortDLDPTable--
h3cDLDPPortDLDPTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cDLDPPortDLDPEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table of a LAN switch's ports, which enable DLDP."
    ::= { h3cDLDPMibObject  3 }

h3cDLDPPortDLDPEntry OBJECT-TYPE
    SYNTAX      H3cDLDPPortDLDPEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The information of a port, which enable DLDP."
    INDEX
        {
            ifIndex
        }
    ::= { h3cDLDPPortDLDPTable 1 }

H3cDLDPPortDLDPEntry ::= SEQUENCE
    {
        h3cDLDPPortDLDPState    DLDPStatus,
        h3cDLDPLinkState        INTEGER,
        h3cDLDPPortDLDPReset    TruthValue
    }

h3cDLDPPortDLDPState OBJECT-TYPE
    SYNTAX      DLDPStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Operating state of DLDP on the port.
        It is relational with h3cDLDPPortState and h3cDLDPLinkState."
    ::= { h3cDLDPPortDLDPEntry 1 }

h3cDLDPLinkState OBJECT-TYPE
    SYNTAX      INTEGER
        {
            down(1),
            up(2),
            unknown(3)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The link state of the port."
    ::= { h3cDLDPPortDLDPEntry 2 }

h3cDLDPPortDLDPReset OBJECT-TYPE
    SYNTAX      TruthValue
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "DLDP reset systematically.
        This node only supports set operation.
        If the value of h3cDLDPPortDLDPReset is true,
        and the current state is disable,
        it will change to inactive while the port is down
        or active while the port is up.
        "
    ::= { h3cDLDPPortDLDPEntry 3 }



--h3cDLDPNeighborTable--
h3cDLDPNeighborTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF H3cDLDPNeighborEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Table of a port's neighbors."
    ::= { h3cDLDPMibObject  4 }

h3cDLDPNeighborEntry OBJECT-TYPE
    SYNTAX      H3cDLDPNeighborEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The information of a neighbor."
    INDEX
        {
            ifIndex,
            h3cDLDPNeighborBridgeMac,
            h3cDLDPNeighborPortIndex
        }
    ::= { h3cDLDPNeighborTable 1 }

H3cDLDPNeighborEntry ::= SEQUENCE
    {
        h3cDLDPNeighborBridgeMac    MacAddress,
        h3cDLDPNeighborPortIndex    Integer32,
        h3cDLDPNeighborState        DLDPNeighborStatus,
        h3cDLDPNeighborAgingTime    Integer32
    }
h3cDLDPNeighborBridgeMac OBJECT-TYPE
    SYNTAX      MacAddress
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The bridge MAC address of a neighbor."
    ::= { h3cDLDPNeighborEntry 1 }

h3cDLDPNeighborPortIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "The port index of a neighbor."
    ::= { h3cDLDPNeighborEntry 2 }

h3cDLDPNeighborState OBJECT-TYPE
    SYNTAX      DLDPNeighborStatus
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The state of a neighbor."
    ::= { h3cDLDPNeighborEntry 3 }

h3cDLDPNeighborAgingTime OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The aging time of a neighbor. unit: second."
    ::= { h3cDLDPNeighborEntry 4 }

--trap--
h3cDLDPTrapObject OBJECT IDENTIFIER ::= {  h3cDldp 2  }

h3cDLDPNotification OBJECT IDENTIFIER ::= { h3cDLDPTrapObject 1 }

h3cDLDPUnidirectionalPort NOTIFICATION-TYPE
    OBJECTS
        {
            ifIndex
        }
    STATUS      current
    DESCRIPTION
        "It will send a SNMP trap when the state of a port
        has changed to unidirectional-link."
    ::= { h3cDLDPNotification 1 }

END
