-- ============================================================================
-- Copyright (c) 2010-2014 Hewlett-Packard Development Company, L.P.
--
-- Description: Port Extender (PEX) information MIB
-- Reference:
-- Version: V1.1
-- History:
--   V1.0 2012-11-12 Initial version by Yang Fan
--   V1.1 2014-03-31 Changed MIB node name to PEX by zushuzhi
-- ============================================================================
HPN-ICF-PEX-MIB DEFINITIONS ::= BEGIN
IMPORTS
    hpnicfCommon
        FROM HPN-ICF-OID-MIB
    entPhysicalIndex, entPhysicalDescr
        FROM ENTITY-MIB
    Integer32, OBJECT-TYPE, MODULE-IDENTITY, NOTIFICATION-TYPE
        FROM SNMPv2-SMI
    RowStatus, DisplayString
        FROM SNMPv2-TC;

hpnicfPex MODULE-IDENTITY
    LAST-UPDATED "201211121129Z"        -- 12th November, 2012 at 11:29 GMT
    ORGANIZATION
        ""
    CONTACT-INFO
        ""
    DESCRIPTION
        "This MIB is used to manage Port Extender (PEX)
         information.  This MIB is applicable to products that support PEX."
    REVISION "201211121129Z"             -- 12th November, 2012 at 11:29 GMT
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { hpnicfCommon 129 }

-- PEX Specification Information

hpnicfPexSpecInfo OBJECT IDENTIFIER ::= { hpnicfPex 1 }

hpnicfPexPortMinId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Lowest PEX port ID that can be used to uniquely identify a PEX port."
    ::= { hpnicfPexSpecInfo 1 }

hpnicfPexPortMaxId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Highest PEX port ID that can be used to uniquely identify a PEX port."
    ::= { hpnicfPexSpecInfo 2 }

hpnicfPexMinAssociateId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Lowest ID that can be assigned to a port extender (PEX)."
    ::= { hpnicfPexSpecInfo 3 }

hpnicfPexMaxAssociateId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Highest ID that can be assigned to a PEX."
    ::= { hpnicfPexSpecInfo 4 }

hpnicfPexMaxPortPerPexPort OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Maximum number of ports that can be bound to a PEX port."
    ::= { hpnicfPexSpecInfo 5 }

-- PEX Information

hpnicfPexTable OBJECT IDENTIFIER ::= { hpnicfPex 2 }

hpnicfPexPortTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF HpnicfPexPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects used to configure the PEX ports."
    ::= { hpnicfPexTable 1 }

hpnicfPexPortEntry OBJECT-TYPE
    SYNTAX      HpnicfPexPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a PEX."
    INDEX
        {
            hpnicfPexPortId
        }
    ::= { hpnicfPexPortTable 1 }

HpnicfPexPortEntry ::= SEQUENCE
    {
        hpnicfPexPortId               Integer32,
        hpnicfPexPortAssociateId     Integer32,
        hpnicfPexPortEntPhysicalIndex Integer32,
        hpnicfPexPortDescr            DisplayString,
        hpnicfPexPortStatus           INTEGER,
        hpnicfPexPortRowStatus        RowStatus
    }

hpnicfPexPortId OBJECT-TYPE
    SYNTAX      Integer32(1..2147483647)
    MAX-ACCESS  accessible-for-notify
    STATUS      current
    DESCRIPTION
        "ID that can be used to uniquely identify a PEX port.  The value range
        is hpnicfPexPortMinId to hpnicfPexPortMaxId."
    ::= { hpnicfPexPortEntry 1 }

hpnicfPexPortAssociateId OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "ID assigned to a PEX.  The
        value range is hpnicfPexMinAssociateId to hpnicfPexMaxAssociateId.
        The value is 0xffff if the PEX is not assigned an ID.
        For a successful configuration, the ID should not be used by any
        other PEX."
    DEFVAL { 65535 }
    ::= { hpnicfPexPortEntry 2 }

hpnicfPexPortEntPhysicalIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Entity index of a PEX in the IRF.  A value of zero
         indicates that the PEX is not online."
    DEFVAL { 0 }
    ::= { hpnicfPexPortEntry 3 }

hpnicfPexPortDescr OBJECT-TYPE
    SYNTAX      DisplayString(SIZE(0..79))
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "Description for the PEX port.  The default value is
        'pex-port XXXX', where 'XXXX' is hpnicfPexPortId.
        Writing a zero-length string to this object resets the value to the
        default."
    ::= { hpnicfPexPortEntry 4 }

hpnicfPexPortStatus OBJECT-TYPE
    SYNTAX      INTEGER
        {
            offline(1),
            loading(2),
            online(3)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Status of the PEX.
        offline: The PEX is absent or its configuration is incomplete.
        loading: The PEX is loading software.
        online: The PEX is operating correctly."
    DEFVAL { offline }
    ::= { hpnicfPexPortEntry 5 }

hpnicfPexPortRowStatus OBJECT-TYPE
    SYNTAX      RowStatus
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The control that allows creation and deletion of entries.
        Values include createAndGo, active, and destroy.
        If the row to be created or modified already exists,
        an error message is returned.  If the row to be deleted does not exist,
        a success message is returned."
    ::= { hpnicfPexPortEntry 6 }


-- PEX PhyPort Information

hpnicfPexPhyPortTable OBJECT-TYPE
    SYNTAX      SEQUENCE OF HpnicfPexPhyPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "This table contains objects used to manage physical ports
        that can be bound or are already bound to a PEX port."
    ::= { hpnicfPexTable 2 }

hpnicfPexPhyPortEntry OBJECT-TYPE
    SYNTAX      HpnicfPexPhyPortEntry
    MAX-ACCESS  not-accessible
    STATUS      current
    DESCRIPTION
        "Information about a physical port that can be bound to or
        has been bound to a PEX port."
    INDEX
        {
            entPhysicalIndex
        }
    ::= { hpnicfPexPhyPortTable 1 }

HpnicfPexPhyPortEntry ::= SEQUENCE
    {
        hpnicfPexPhyPortStatus           INTEGER,
        hpnicfPexPhyPortBelongToPexPort  Integer32,
        hpnicfPexPhyPortNeighborEntIndex Integer32
    }

hpnicfPexPhyPortStatus OBJECT-TYPE
    SYNTAX      INTEGER
        {
            unknown(1),
            down(2),
            blocked(3),
            forwarding(4)
        }
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Status of the physical port that is bound to a PEX port.
        The following are status values:
        unknown: The physical port is not bound to any PEX port.
        down: The physical port is link down.
        blocked: The physical port is blocked and cannot forward traffic.
        forwarding: The physical port can forwarding traffic."
    DEFVAL { unknown }
    ::= { hpnicfPexPhyPortEntry 1 }

hpnicfPexPhyPortBelongToPexPort OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-write
    STATUS      current
    DESCRIPTION
        "ID of the PEX port to which the physical port belongs.  The value
        range is hpnicfPexPortMinId to hpnicfPexPortMaxId.  A value of zero
        indicates that the port doesn't belong to any PEX port."
    DEFVAL { 0 }
    ::= { hpnicfPexPhyPortEntry 2 }

hpnicfPexPhyPortNeighborEntIndex OBJECT-TYPE
    SYNTAX      Integer32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "Entity index of a physical port that connects the PEX to the parent
        device.  This value is identical to entPhysicalIndex in ENTITY-MIB.
        A value of zero indicates that the physical port is not bound to any
        PEX port or is not up."
    ::= { hpnicfPexPhyPortEntry 3 }

-- PEX Traps

hpnicfPexTraps OBJECT IDENTIFIER ::= { hpnicfPex 3 }

hpnicfPexTrapPrefix OBJECT IDENTIFIER ::= { hpnicfPexTraps 0 }

hpnicfPexPortOnline  NOTIFICATION-TYPE
    OBJECTS
        {
            hpnicfPexPortId,
            hpnicfPexPortDescr
        }
    STATUS      current
    DESCRIPTION
        "An hpnicfPexPortOnline trap is sent when the PEX transitions to
        online state."
    ::= { hpnicfPexTrapPrefix 1 }

hpnicfPexPortOffline  NOTIFICATION-TYPE
    OBJECTS
        {
            hpnicfPexPortId,
            hpnicfPexPortDescr
        }
    STATUS      current
    DESCRIPTION
        "An hpnicfPexPortOnline trap is sent when the PEX transitions to
        offline state."
    ::= { hpnicfPexTrapPrefix 2 }

hpnicfPexPhyPortForwarding  NOTIFICATION-TYPE
    OBJECTS
        {
            hpnicfPexEntPhysicalIndexBind,
            entPhysicalDescr
        }
    STATUS      current
    DESCRIPTION
        "An hpnicfPexPhyPortForwarding trap is sent when the PEX physical port
        transitions to forwarding state."
    ::= { hpnicfPexTrapPrefix 3 }

hpnicfPexPhyPortBlocked  NOTIFICATION-TYPE
    OBJECTS
        {
            hpnicfPexEntPhysicalIndexBind,
            entPhysicalDescr
        }
    STATUS      current
    DESCRIPTION
        "An hpnicfPexPhyPortBlocked trap is sent when the PEX physical port
        transitions from forwarding state to blocked state."
    ::= { hpnicfPexTrapPrefix 4 }

hpnicfPexTrapObjects OBJECT IDENTIFIER ::= { hpnicfPex 4 }

hpnicfPexEntPhysicalIndexBind OBJECT-TYPE
    SYNTAX     Integer32
    MAX-ACCESS accessible-for-notify
    STATUS     current
    DESCRIPTION
        "This index is identical to entPhysicalIndex in ENTITY-MIB."
    ::= { hpnicfPexTrapObjects 1 }
END
