-- =====================================================================
-- Copyright (c) 2010-2013 Hewlett-Packard Development Company, L.P.
--
-- Description:
--      This MIB module is for the management of the Fibre Channel
--      Trace Route functionality.
-- Reference:
-- Version: V1.0
-- History:
--      V1.0 Initial version created by liuyanchao 2013-02-27
-- =====================================================================
HPN-ICF-FC-TRACE-ROUTE-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Unsigned32
        FROM SNMPv2-SMI
    RowStatus, TruthValue
        FROM SNMPv2-TC
    HpnicfFcVsanIndex, HpnicfFcAddressType, HpnicfFcAddress, HpnicfFcNameId,
    HpnicfFcStartOper
        FROM HPN-ICF-FC-TC-MIB
    hpnicfSan
        FROM HPN-ICF-VSAN-MIB;


hpnicfFcTraceRoute  MODULE-IDENTITY
    LAST-UPDATED "201302270000Z"
    ORGANIZATION
        ""
    CONTACT-INFO
        ""
    DESCRIPTION
        "This MIB module is for the management of the Fibre Channel
         Trace Route functionality."
    REVISION "201302270000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { hpnicfSan 4 }

hpnicfFcTraceRouteObjects             OBJECT IDENTIFIER
    ::= { hpnicfFcTraceRoute 1 }
hpnicfFcTraceRouteConfigurations      OBJECT IDENTIFIER
    ::= { hpnicfFcTraceRouteObjects 1 }
hpnicfFcTraceRouteResults             OBJECT IDENTIFIER
    ::= { hpnicfFcTraceRouteObjects 2 }
hpnicfFcTraceRouteNotifications       OBJECT IDENTIFIER
    ::= { hpnicfFcTraceRouteObjects 3 }
hpnicfFcTraceRouteNotifyPrefix        OBJECT IDENTIFIER
    ::= { hpnicfFcTraceRouteNotifications 0 }

-- Trace Route table.

hpnicfFcTraceRouteTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF HpnicfFcTraceRouteEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A table of trace route entries containing a group
         of trace route requests that need to be executed
         at the agent."
    ::= { hpnicfFcTraceRouteConfigurations 1 }

hpnicfFcTraceRouteEntry OBJECT-TYPE
    SYNTAX        HpnicfFcTraceRouteEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A trace route request entry that needs to be executed
         at the agent."
    INDEX         { hpnicfFcTraceRouteIndex }
    ::= { hpnicfFcTraceRouteTable 1 }


HpnicfFcTraceRouteEntry ::= SEQUENCE {
    hpnicfFcTraceRouteIndex              Unsigned32,
    hpnicfFcTraceRouteVsan               HpnicfFcVsanIndex,
    hpnicfFcTraceRouteAddressType        HpnicfFcAddressType,
    hpnicfFcTraceRouteAddress            HpnicfFcAddress,
    hpnicfFcTraceRouteTimeout            Unsigned32,
    hpnicfFcTraceRouteAdminStatus        HpnicfFcStartOper,
    hpnicfFcTraceRouteOperStatus         INTEGER,
    hpnicfFcTraceRouteAgeInterval        Unsigned32,
    hpnicfFcTraceRouteTrapOnCompletion   TruthValue,
    hpnicfFcTraceRouteRowStatus          RowStatus
}

hpnicfFcTraceRouteIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    accessible-for-notify
    STATUS        current
    DESCRIPTION
        "The index of the current trace route entry.  This object
         uniquely identifies a trace route request entry in a
         specified VSAN (Virtual Storage Area Network)."
    ::= { hpnicfFcTraceRouteEntry 1 }

hpnicfFcTraceRouteVsan OBJECT-TYPE
    SYNTAX        HpnicfFcVsanIndex
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The VSAN on which the trace route request will be
         executed.  If the corresponding instance value of
         hpnicfFcTraceRouteOperStatus is 'inProgress', the
         object cannot be modified."
    ::= { hpnicfFcTraceRouteEntry 2 }

hpnicfFcTraceRouteAddressType OBJECT-TYPE
    SYNTAX        HpnicfFcAddressType
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The type of the corresponding instance of
         hpnicfFcTraceRouteAddress object."
    DEFVAL        { fcid }
    ::= { hpnicfFcTraceRouteEntry 3 }

hpnicfFcTraceRouteAddress OBJECT-TYPE
    SYNTAX        HpnicfFcAddress
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The address to which the route will be traced.
         This object will contain an 8-octet WWN (World Wide Name),
         if the value of the associated instance of
         hpnicfFcTraceRouteAddressType object is 'wwn'.
         This object will contain a 3-octet Fibre Channel ID,
         if the value of the associated instance of
         hpnicfFcTraceRouteAddressType object is 'fcid'."
    ::= { hpnicfFcTraceRouteEntry 4 }

hpnicfFcTraceRouteTimeout OBJECT-TYPE
    SYNTAX        Unsigned32 (1..10)
    UNITS         "seconds"
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The value of timeout for this trace route request.
         If the corresponding instance value of
         hpnicfFcTraceRouteOperStatus object is 'inProgress',
         this object cannot be modified."
    DEFVAL        { 5 }
    ::= { hpnicfFcTraceRouteEntry 5 }

hpnicfFcTraceRouteAdminStatus OBJECT-TYPE
    SYNTAX        HpnicfFcStartOper
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The administrative status of each hpnicfFcTraceRouteEntry.

         The object has two values:
         enable   -  Activate the entry.
         disable  -  Deactivate the entry.

         When the trace route entry is being executed, this object
         cannot be modified.  If this object is being read, a value
         of 'enable' will be returned.  When the execution finishes,
         the value of this object will be set to 'disable'."
    DEFVAL        { disable }
    ::= { hpnicfFcTraceRouteEntry 6 }

hpnicfFcTraceRouteOperStatus OBJECT-TYPE
    SYNTAX        INTEGER {
      inProgress(1),     -- trace route in progress
      success(2),        -- trace route success
      partialSuccess(3), -- trace route partial success
      failure(4),        -- trace route failure
      disabled(5)        -- trace route is disabled
                  }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object indicates the operational status
         of this hpnicfFcTraceRouteEntry.

         The value specifications are listed as follows:
         inProgress     - Trace route is in progress.
         success        - Trace route has succeeded.
         partialSuccess - Trace route has partially succeeded.
         failure        - Trace route has failed due to resource limitations.
         disabled       - Trace route is disabled."
    ::= { hpnicfFcTraceRouteEntry 7 }

hpnicfFcTraceRouteAgeInterval OBJECT-TYPE
    SYNTAX        Unsigned32 (500..900)
    UNITS         "seconds"
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The interval time for an entry to age out
         after a trace route test is completed."
    DEFVAL        { 500 }
    ::= { hpnicfFcTraceRouteEntry 8 }

hpnicfFcTraceRouteTrapOnCompletion OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object indicates whether a hpnicfFcTraceRouteCompletionNotify
         notification should be generated when this trace route test
         completes."
    DEFVAL        { false }
    ::= { hpnicfFcTraceRouteEntry 9 }

hpnicfFcTraceRouteRowStatus OBJECT-TYPE
    SYNTAX        RowStatus
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The status of this conceptual row."
    ::= { hpnicfFcTraceRouteEntry 10 }


-- Trace Route Hops Table
-- The hpnicfFcTraceRouteHopsTable contains the hop-by-hop result
-- of a trace route test performed for an entry in the
-- hpnicfFcTraceRouteTable.

hpnicfFcTraceRouteHopsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF HpnicfFcTraceRouteHopsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A table of trace route hop results.
         This table indicates the hop-by-hop result of a trace route test
         associated with an entry in the hpnicfFcTraceRouteTable."
    ::= { hpnicfFcTraceRouteResults 1 }

hpnicfFcTraceRouteHopsEntry OBJECT-TYPE
    SYNTAX        HpnicfFcTraceRouteHopsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A trace route hop entry.

         The first index member specifies the hpnicfFcTraceRouteEntry
         that an hpnicfFcTraceRouteHopsEntry is associated with.  The
         second index element identifies a hop in a trace route path.

         In the case of a complete path being traced, entries
         corresponding to an hpnicfFcTraceRouteEntry are created
         automatically in this table.

         Each hop in the complete path will be listed in this table.

         When an hpnicfFcTraceRouteEntry is deleted or aged out, the
         entries corresponding to the hpnicfFcTraceRouteEntry in this
         table are also deleted."
    INDEX         { hpnicfFcTraceRouteIndex, hpnicfFcTraceRouteHopsIndex }
    ::= { hpnicfFcTraceRouteHopsTable 1 }

HpnicfFcTraceRouteHopsEntry ::= SEQUENCE {
    hpnicfFcTraceRouteHopsIndex           Unsigned32,
    hpnicfFcTraceRouteHopsAddr            HpnicfFcNameId
}

hpnicfFcTraceRouteHopsIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "This object indicates the hop index for a trace route hop.

         Values for this object associated with the same
         hpnicfFcTraceRouteIndex MUST begin with 1 and
         automatically increase by 1."
    ::= { hpnicfFcTraceRouteHopsEntry 1 }

hpnicfFcTraceRouteHopsAddr OBJECT-TYPE
    SYNTAX        HpnicfFcNameId
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object specifies the WWN of the device associated
         with this hop."
    ::= { hpnicfFcTraceRouteHopsEntry 2 }

-- Notifications

hpnicfFcTraceRouteCompletionNotify NOTIFICATION-TYPE
    OBJECTS       { hpnicfFcTraceRouteIndex,
                    hpnicfFcTraceRouteVsan,
                    hpnicfFcTraceRouteAddressType,
                    hpnicfFcTraceRouteAddress,
                    hpnicfFcTraceRouteOperStatus }
    STATUS        current
    DESCRIPTION
        "When a trace route test is finished and the instance of
         hpnicfFcTraceRouteTrapOnCompletion associated with the test
         is set to 'true', this notification occurred."
    ::= { hpnicfFcTraceRouteNotifyPrefix 1 }

END
