-- =====================================================================
-- Copyright (c) 2004-2013 Hangzhou H3C Tech. Co., Ltd. All rights reserved.
--
-- Description:
--      This MIB module is for the management of the Fibre Channel
--      Ping functionality.
-- Reference:
-- Version: V1.0
-- History:
--      V1.0 Initial version created by liuyanchao 2013-03-15
-- =====================================================================
H3C-FC-PING-MIB DEFINITIONS ::= BEGIN

IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Unsigned32, Integer32
        FROM SNMPv2-SMI
    RowStatus, TruthValue
        FROM SNMPv2-TC
    H3cFcVsanIndex, H3cFcAddressType, H3cFcAddress,
    H3cFcStartOper
        FROM H3C-FC-TC-MIB
    h3cSan
        FROM H3C-VSAN-MIB;


h3cFcPing  MODULE-IDENTITY
    LAST-UPDATED "201303150000Z"
    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 module is for the management of the Fibre Channel
         Ping functionality."
    REVISION "201303150000Z"
    DESCRIPTION
        "Initial version of this MIB module."
    ::= { h3cSan 5 }

h3cFcPingObjects             OBJECT IDENTIFIER
    ::= { h3cFcPing 1 }
h3cFcPingConfigurations      OBJECT IDENTIFIER
    ::= { h3cFcPingObjects 1 }
h3cFcPingStatistics          OBJECT IDENTIFIER
    ::= { h3cFcPingObjects 2 }
h3cFcPingNotifications       OBJECT IDENTIFIER
    ::= { h3cFcPingObjects 3 }
h3cFcPingNotifyPrefix        OBJECT IDENTIFIER
    ::= { h3cFcPingNotifications 0 }

-- FC Ping table

h3cFcPingTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF H3cFcPingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A table of FC ping entries containing a group of
         FC ping requests that need to be executed at the
         agent."
    ::= { h3cFcPingConfigurations 1 }

h3cFcPingEntry OBJECT-TYPE
    SYNTAX        H3cFcPingEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A FC ping request entry that need to be executed
         at the agent."
    INDEX         { h3cFcPingIndex }
    ::= { h3cFcPingTable 1 }

H3cFcPingEntry ::= SEQUENCE {
    h3cFcPingIndex              Unsigned32,
    h3cFcPingVsan               H3cFcVsanIndex,
    h3cFcPingAddressType        H3cFcAddressType,
    h3cFcPingAddress            H3cFcAddress,
    h3cFcPingPacketCount        Unsigned32,
    h3cFcPingPayloadSize        Unsigned32,
    h3cFcPingTimeout            Unsigned32,
    h3cFcPingDelay              Unsigned32,
    h3cFcPingAgeInterval        Unsigned32,
    h3cFcPingAdminStatus        H3cFcStartOper,
    h3cFcPingOperStatus         INTEGER,
    h3cFcPingTrapOnCompletion   TruthValue,
    h3cFcPingRowStatus          RowStatus
}

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

h3cFcPingVsan OBJECT-TYPE
    SYNTAX        H3cFcVsanIndex
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The VSAN on which the FC ping request will be
         performed.  If the corresponding instance value of
         h3cFcPingOperStatus is 'inProgress', the object
         cannot be modified."
    ::= { h3cFcPingEntry 2 }

h3cFcPingAddressType OBJECT-TYPE
    SYNTAX        H3cFcAddressType
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The type of the corresponding instance of
         h3cFcPingAddress object."
    DEFVAL        { fcid }
    ::= { h3cFcPingEntry 3 }

h3cFcPingAddress OBJECT-TYPE
    SYNTAX        H3cFcAddress
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The address to which the route will be pinged.

         This object will contain an 8 octet long WWN(World Wide Name),
         if the value of the associated instance of h3cFcPingAddressType
         object is 'wwn'.

         This object will contain a 3 octet long Fibre Channel Address ID,
         if the value of the associated instance of h3cFcPingAddressType
         object is 'fcid'."
    ::= { h3cFcPingEntry 4 }

h3cFcPingPacketCount OBJECT-TYPE
    SYNTAX      Unsigned32 (1..2147483647)
    MAX-ACCESS  read-create
    STATUS      current
    DESCRIPTION
        "The number of FC ping packets to be sent to the
         target in this sequence."
    DEFVAL        { 5 }
    ::= { h3cFcPingEntry 5 }

h3cFcPingPayloadSize OBJECT-TYPE
    SYNTAX      Unsigned32
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "This object specifies the size of the FC ping packet
         payload to be sent to the target in this sequence."
    ::= { h3cFcPingEntry 6 }

h3cFcPingTimeout OBJECT-TYPE
    SYNTAX        Unsigned32 (1..10)
    UNITS         "seconds"
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The value of timeout for this FC ping request."
    DEFVAL        { 5 }
    ::= { h3cFcPingEntry 7 }

h3cFcPingDelay OBJECT-TYPE
    SYNTAX      Unsigned32
    UNITS       "seconds"
    MAX-ACCESS  read-only
    STATUS      current
    DESCRIPTION
        "The minimum amount of time to wait before sending
         the next packet in a sequence, after receiving a
         response or declaring a timeout for a previously
         transmitted packet."
    ::= { h3cFcPingEntry 8 }

h3cFcPingAgeInterval OBJECT-TYPE
    SYNTAX        Unsigned32 (500..900)
    UNITS         "seconds"
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The interval time after a FC ping test completes
         before the entry is aged out."
    DEFVAL        { 500 }
    ::= { h3cFcPingEntry 9 }

h3cFcPingAdminStatus OBJECT-TYPE
    SYNTAX        H3cFcStartOper
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The administrative status of each h3cFcPingEntry.

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

         When the FC ping entry is executing, this object cannot be
         modified.  If this object is read at such a time, a value of
         'enable' will be returned.  When the test finishes, the value
         of this object will be set to 'disable'."
    DEFVAL        { disable }
    ::= { h3cFcPingEntry 10 }

h3cFcPingOperStatus OBJECT-TYPE
    SYNTAX        INTEGER {
      inProgress(1),     -- FC ping in progress
      complete(2),       -- FC ping complete
      disabled(3),       -- FC ping disabled
      failed(4)          -- FC ping failed
      }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object indicates the operational status
         of this h3cFcPingEntry.

         The value specifications are listed as follows:
         inProgress     - FC ping is in progress.
         complete       - FC ping is complete.
         disabled       - FC ping is disabled.
         failed         - FC ping has failed due to resource limitations."
    ::= { h3cFcPingEntry 11 }

h3cFcPingTrapOnCompletion OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object indicates that if h3cFcPingCompletionNotify
         notification should be generated or not when the corresponding
         ping sequence completes."
    DEFVAL        { false }
    ::= { h3cFcPingEntry 12 }

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

-- FC Ping Statistics Table

h3cFcPingStatTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF H3cFcPingStatEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A table of FC ping statistics.
         This table notes the FC ping statistics of a FC ping test
         associated with an entry in the h3cFcPingTable."
    ::= { h3cFcPingStatistics 1 }

h3cFcPingStatEntry OBJECT-TYPE
    SYNTAX        H3cFcPingStatEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A FC ping statistics entry.

         An entry will be created automatically in this table when the
         h3cFcPingRowStatus of a ping request in the h3cFcPingTable
         is set to 'active'.

         The entry in this table will have the same indices as the entry
         that in the h3cFcPingTable.

         An entry in this table will be deleted when the corresponding
         entry in the h3cFcPingTable is deleted."
    INDEX         { h3cFcPingIndex }
    ::= { h3cFcPingStatTable 1 }

H3cFcPingStatEntry ::= SEQUENCE {
    h3cFcPingReqPackets      Unsigned32,
    h3cFcPingResPackets      Unsigned32,
    h3cFcPingMinTime         Integer32,
    h3cFcPingAverageTime     Integer32,
    h3cFcPingMaxTime         Integer32,
    h3cFcPingTimeoutNum      Unsigned32
}

h3cFcPingReqPackets OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of FC ping packets request in this sequence."
    ::= { h3cFcPingStatEntry 1 }

h3cFcPingResPackets OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of FC ping packets response in this sequence."
    ::= { h3cFcPingStatEntry 2 }

h3cFcPingMinTime OBJECT-TYPE
    SYNTAX        Integer32
    UNITS         "microseconds"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The minimum round trip time of all the packets that
         have been sent in this sequence."
    ::= { h3cFcPingStatEntry 3 }

h3cFcPingAverageTime OBJECT-TYPE
    SYNTAX        Integer32
    UNITS         "microseconds"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The average round trip time of all the packets that
         have been sent in this sequence."
    ::= { h3cFcPingStatEntry 4 }

h3cFcPingMaxTime OBJECT-TYPE
    SYNTAX        Integer32
    UNITS         "microseconds"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The maximum round trip time of all the packets that
         have been sent in this sequence."
    ::= { h3cFcPingStatEntry 5 }


h3cFcPingTimeoutNum OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of timeouts encountered in this sequence."
    ::= { h3cFcPingStatEntry 6 }

-- Notifications

h3cFcPingCompletionNotify NOTIFICATION-TYPE
    OBJECTS       { h3cFcPingIndex,
                    h3cFcPingVsan,
                    h3cFcPingAddressType,
                    h3cFcPingAddress,
                    h3cFcPingReqPackets,
                    h3cFcPingResPackets}
    STATUS        current
    DESCRIPTION
        "When a FC ping test is finished and the instance of
         h3cFcPingTrapOnCompletion associated with the test
         is set to 'true', this notification occurred."
    ::= { h3cFcPingNotifyPrefix 1 }

END
