-- ****************************************************************************
-- ****************************************************************************
--
--                            iSCSI Information
--           Management Information Base for SNMP Network Management
--
--
--       Copyright 2016-2020 Hewlett Packard Enterprise Development LP
--      Hewlett-Packard Company shall not be liable for technical or
--      editorial errors or omissions contained herein. The information in
--      this document is provided "as is" without warranty of any kind and
--      is subject to change without notice. The warranties for HP products
--      are set forth in the express limited warranty statements
--      accompanying such products. Nothing herein should be construed as
--      constituting an additional warranty.
--
--      Confidential computer software. Valid license from HP required for
--      possession, use or copying. Consistent with FAR 12.211 and 12.212,
--      Commercial Computer Software, Computer Software Documentation, and
--      Technical Data for Commercial Items are licensed to the U.S.
--      Government under vendor's standard commercial license.
--
--      Refer to the READMIB.RDM file for more information about the
--      organization of the information in the Compaq Enterprise.
--
--      The Compaq Enterprise number is 232.
--      The ASN.1 prefix to, and including the Compaq Enterprise is:
--           1.3.6.1.4.1.232
--
-- ****************************************************************************

CPQISCSI-MIB DEFINITIONS ::= BEGIN

    IMPORTS
        compaq                  FROM CPQHOST-MIB
        enterprises             FROM RFC1155-SMI
        Counter                 FROM RFC1155-SMI
        Gauge                   FROM RFC1155-SMI
        TimeTicks               FROM RFC1155-SMI
        DisplayString           FROM RFC1213-MIB
        OBJECT-TYPE             FROM RFC-1212
        TRAP-TYPE               FROM RFC-1215
        sysName                 FROM RFC1213-MIB
        cpqHoTrapFlags          FROM CPQHOST-MIB;

--  compaq                       OBJECT IDENTIFIER ::= { enterprises 232 }

    cpqiScsiModule               OBJECT IDENTIFIER ::= { compaq 169 }
    cpqiScsiMibRev               OBJECT IDENTIFIER ::= { cpqiScsiModule 1 }
    cpqiScsiObjects              OBJECT IDENTIFIER ::= { cpqiScsiModule 2 }

    cpqiScsiDescriptors          OBJECT IDENTIFIER ::= { cpqiScsiObjects 1 }
    cpqiScsiInstance             OBJECT IDENTIFIER ::= { cpqiScsiObjects 2 }
    cpqiScsiPortal               OBJECT IDENTIFIER ::= { cpqiScsiObjects 3 }
    cpqiScsiTargetPortal         OBJECT IDENTIFIER ::= { cpqiScsiObjects 4 }
    cpqiScsiInitiatorPortal      OBJECT IDENTIFIER ::= { cpqiScsiObjects 5 }
    cpqiScsiNode                 OBJECT IDENTIFIER ::= { cpqiScsiObjects 6 }
    cpqiScsiTarget               OBJECT IDENTIFIER ::= { cpqiScsiObjects 7 }
    cpqiScsiTgtAuthorization     OBJECT IDENTIFIER ::= { cpqiScsiObjects 8 }
    cpqiScsiInitiator            OBJECT IDENTIFIER ::= { cpqiScsiObjects 9 }
    cpqiScsiIntrAuthorization    OBJECT IDENTIFIER ::= { cpqiScsiObjects 10 }
    cpqiScsiSession              OBJECT IDENTIFIER ::= { cpqiScsiObjects 11 }
    cpqiScsiConnection           OBJECT IDENTIFIER ::= { cpqiScsiObjects 12 }


-- ****************************************************************************
--
--   iSCSI Information MIB Revision
--   ================================
--
-- The compaq enterprise               (1.3.6.1.4.1.232)
--      cpqiScsiModule Group           (1.3.6.1.4.1.232.169)
--       cpqiScsiMibRev Group          (1.3.6.1.4.1.232.169.1)
--       cpqiScsiObjects               (1.3.6.1.4.1.232.169.2)
--
--      Implementation of the cpqiScsiMibRev group is mandatory for all agents
--      supporting the iSCSI MIB.
--
--      An SNMP Agent conforming to this document will return a
--      cpqiScsiMibRevMajor of one (1) and a cpqiScsiMibRevMinor of four (4).
--
--
-- ****************************************************************************

   cpqiScsiMibRevMajor OBJECT-TYPE
       SYNTAX  INTEGER (1..65535)
       ACCESS  read-only
       STATUS  mandatory
       DESCRIPTION
           "The Major Revision level.

            A change in the major revision level represents a major change
            in the architecture of the MIB.  A change in the major revision
            level may indicate a significant change in the information
            supported and/or the meaning of the supported information,
            correct interpretation of data may require a MIB document with
            the same major revision level."
       ::= { cpqiScsiMibRev 1 }

       cpqiScsiMibRevMinor OBJECT-TYPE
       SYNTAX  INTEGER (0..65535)
       ACCESS  read-only
       STATUS  mandatory
       DESCRIPTION
           "The Minor Revision level.

            A change in the minor revision level may represent some minor
            additional support; no changes to any pre-existing information
            has occurred."
       ::= { cpqiScsiMibRev 2 }

       cpqiScsiMibCondition OBJECT-TYPE
           SYNTAX  INTEGER {
               other(1),
               ok(2),
               degraded(3),
               failed(4)
               }
           ACCESS  read-only
           STATUS  mandatory
           DESCRIPTION
               "The overall condition.

                This object represents the overall status of the iSCSI system
                represented by this MIB."
           ::= { cpqiScsiMibRev 3 }

-- ****************************************************************************
--
-- cpqiScsiInstanceAttributesTable
-- ===============================
--
-- The compaq enterprise                        (1.3.6.1.4.1.232)
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiInstance Group                    (1.3.6.1.4.1.232.169.2.2)
--         cpqiScsiInstanceAttributesTable         (1.3.6.1.4.1.232.169.2.2.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all agents that support
--  the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiInstanceAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiInstanceAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of iSCSI instances present on the system."
            ::= { cpqiScsiInstance 1 }

        cpqiScsiInstanceAttributesEntry OBJECT-TYPE
            SYNTAX IscsiInstanceAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular iSCSI instance."
            INDEX { cpqiScsiInstIndex }
            ::= { cpqiScsiInstanceAttributesTable 1 }

        IscsiInstanceAttributesEntry ::= SEQUENCE {
            cpqiScsiInstIndex Gauge,
            cpqiScsiInstDescr DisplayString,
            cpqiScsiInstVersionMin INTEGER,
            cpqiScsiInstVersionMax INTEGER,
            cpqiScsiInstVendorID DisplayString,
            cpqiScsiInstVendorVersion DisplayString,
            cpqiScsiInstPortalNumber Gauge,
            cpqiScsiInstNodeNumber Gauge,
            cpqiScsiInstSessionNumber Gauge,
            cpqiScsiInstSsnFailures Counter,
            cpqiScsiInstLastSsnFailureType OBJECT IDENTIFIER,
            cpqiScsiInstLastSsnRmtNodeName DisplayString
            }

        cpqiScsiInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiInstanceAttributesEntry 1 }

        cpqiScsiInstDescr OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An octet string, determined by the implementation to describe
                the iSCSI instance.  When only a single instance is present,
                this object may be set to the zero-length string. with multiple
                iSCSI instances, it may be used in an implementation-dependent
                manner to describe the purpose of the respective instance."
            ::= { cpqiScsiInstanceAttributesEntry 2 }

        cpqiScsiInstVersionMin OBJECT-TYPE
            SYNTAX INTEGER(0..255)
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "Minimum version number of the iSCSI specification supported
                by this instance."
            ::= { cpqiScsiInstanceAttributesEntry 3 }

        cpqiScsiInstVersionMax OBJECT-TYPE
            SYNTAX INTEGER(0..255)
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "Maximum version number of the iSCSI specification supported
                by this instance."
            ::= { cpqiScsiInstanceAttributesEntry 4 }

        cpqiScsiInstVendorID OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An octet string describing the manufacturer of the
                implementation of this instance."
            ::= { cpqiScsiInstanceAttributesEntry 5 }

        cpqiScsiInstVendorVersion OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An octet string set by the manufacturer describing the
                version of the implementation of this instance.  The
                format of this string is determined solely by the
                manufacturer, and is for informational purposes only.
                It is unrelated to the iSCSI specification version numbers."
            ::= { cpqiScsiInstanceAttributesEntry 6 }

        cpqiScsiInstPortalNumber OBJECT-TYPE
            SYNTAX Gauge
        --  Units
        --    transport endpoints
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The number of rows in the cpqiScsiPortalAttributesTable
                which are currently associated with this iSCSI instance."
            ::= { cpqiScsiInstanceAttributesEntry 7 }

        cpqiScsiInstNodeNumber OBJECT-TYPE
            SYNTAX Gauge
        --  Units
        --    Internet Network Addresses
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The number of rows in the cpqiScsiNodeAttributesTable
                which are currently associated with this iSCSI instance."
            ::= { cpqiScsiInstanceAttributesEntry 8 }

        cpqiScsiInstSessionNumber OBJECT-TYPE
            SYNTAX Gauge
        --  Units
        --    sessions
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The number of rows in the cpqiScsiSessionAttributesTable
                which are currently associated with this iSCSI instance."
            ::= { cpqiScsiInstanceAttributesEntry 9 }

        cpqiScsiInstSsnFailures OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    sessions
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object counts the number of times a session belonging
                to this instance has been failed."
            ::= { cpqiScsiInstanceAttributesEntry 10 }

        cpqiScsiInstLastSsnFailureType OBJECT-TYPE
            SYNTAX OBJECT IDENTIFIER
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The counter object in the cpqiScsiInstSsnErrorStatsTable
                that was incremented when the last session failure occurred.

                If the reason for failure is not found in the
                cpqiScsiInstSsnErrorStatsTable, the value { 0.0 } is
                used instead."
            ::= { cpqiScsiInstanceAttributesEntry 11 }

        cpqiScsiInstLastSsnRmtNodeName OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A string describing the name of the remote node from the 
                 failed session. If the reason for failure is not found 
                 then a null string will be returned."
            ::= { cpqiScsiInstanceAttributesEntry 12 }

-- ****************************************************************************
--    cpqiScsiInstanceSsnErrorStatsTable
--    ===============================
--
-- The compaq enterprise                        (1.3.6.1.4.1.232)
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiInstance Group                    (1.3.6.1.4.1.232.169.2.2)
--         cpqiScsiInstanceSsnErrorStatsTable      (1.3.6.1.4.1.232.169.2.2.2)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiInstanceSsnErrorStatsTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiInstanceSsnErrorStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of error types that will cause a session failure."
            ::= { cpqiScsiInstance 2 }

        cpqiScsiInstanceSsnErrorStatsEntry OBJECT-TYPE
            SYNTAX IscsiInstanceSsnErrorStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular iSCSI instance."
            INDEX { cpqiScsiInstIndex }
        -- Augments cpqiScsiInstanceAttributesEntry
            ::= { cpqiScsiInstanceSsnErrorStatsTable 1 }

        IscsiInstanceSsnErrorStatsEntry ::= SEQUENCE {
            cpqiScsiInstSsnInstIndex Gauge,
            cpqiScsiInstSsnDigestErrors Counter,
            cpqiScsiInstSsnCxnTimeoutErrors Counter,
            cpqiScsiInstSsnFormatErrors Counter
            }

        cpqiScsiInstSsnInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiInstanceSsnErrorStatsEntry 1 }

        cpqiScsiInstSsnDigestErrors OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    sessions
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of sessions which were failed due to receipt of a PDU
                containing header or data digest errors."
            ::= { cpqiScsiInstanceSsnErrorStatsEntry 2 }

        cpqiScsiInstSsnCxnTimeoutErrors OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    sessions
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of sessions which were failed due to a sequence
                exceeding a time limit."
            ::= { cpqiScsiInstanceSsnErrorStatsEntry 3 }

        cpqiScsiInstSsnFormatErrors OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    sessions
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of sessions which were failed due to receipt of a PDU
                which contained a format error."
            ::= { cpqiScsiInstanceSsnErrorStatsEntry 4 }

-- ****************************************************************************
--    cpqiScsiPortalAttributesTable
--    ==========================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiPortal Group                      (1.3.6.1.4.1.232.169.2.3)
--         cpqiScsiPortalAttributesTable           (1.3.6.1.4.1.232.169.2.3.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiPortalAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiPortalAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of transport endpoints (using TCP or another transport
                protocol) used by this iSCSI instance. An iSCSI instance may
                use a portal to listen for incoming connections to its targets,
                to initiate connections to other targets, or both."
            ::= { cpqiScsiPortal 1 }

        cpqiScsiPortalAttributesEntry OBJECT-TYPE
            SYNTAX IscsiPortalAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular portal instance."
            INDEX { cpqiScsiInstIndex, cpqiScsiPortalIndex }
            ::= { cpqiScsiPortalAttributesTable 1 }

        IscsiPortalAttributesEntry ::= SEQUENCE {
            cpqiScsiPortalInstIndex Gauge,
            cpqiScsiPortalIndex Gauge,
            cpqiScsiPortalRowStatus INTEGER,
            cpqiScsiPortalRoles OCTET STRING,
            cpqiScsiPortalAddrType INTEGER,
            cpqiScsiPortalAddr OCTET STRING,
            cpqiScsiPortalProtocol INTEGER,
            cpqiScsiPortalMaxRecvDataSegLength INTEGER,
            cpqiScsiPortalPrimaryHdrDigest INTEGER,
            cpqiScsiPortalPrimaryDataDigest INTEGER,
            cpqiScsiPortalSecondaryHdrDigest INTEGER,
            cpqiScsiPortalSecondaryDataDigest INTEGER,
            cpqiScsiPortalRecvMarker INTEGER
            }

        cpqiScsiPortalInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiPortalAttributesEntry 1 }

        cpqiScsiPortalIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                transport endpoint within this iSCSI instance."
            ::= { cpqiScsiPortalAttributesEntry 2 }

        cpqiScsiPortalRowStatus OBJECT-TYPE
            SYNTAX INTEGER
            {
               active(1),
               notInService(2),
               notReady(3),
               createAndGo(4),
               createAndWait(5),
               destroy(6)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The status of the row."
            ::= { cpqiScsiPortalAttributesEntry 3 }

        cpqiScsiPortalRoles OBJECT-TYPE
            SYNTAX OCTET STRING(SIZE(1..2))
                -- BITS are:
                --   targetTypePortal(0)
                --   initiatorTypePortal(1)
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "A portal can operate in one or both of two roles:
                as a target portal and/or an initiator portal. If
                the portal will operate in both roles, both bits
                must be set.

                When a new cpqiScsiPortalAttributesEntry is to be created,
                the agent should use this object as a hint for the
                creation of a new cpqiScsiTgtPortalAttributesEntry and/or
                cpqiScsiIntrPortalAttributesEntry."
            ::= { cpqiScsiPortalAttributesEntry 4 }

        cpqiScsiPortalAddrType OBJECT-TYPE
            SYNTAX INTEGER
            {
--               unknown(0),
               ipv4(1),
               ipv6(2),
               ipv4z(3),
               ipv6z(4),
               dns(16)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The type of Internet Network Address in the cpqiScsiPortalAddr."
            DEFVAL { ipv4 }
            ::= { cpqiScsiPortalAttributesEntry 5 }

        cpqiScsiPortalAddr OBJECT-TYPE
            SYNTAX OCTET STRING(SIZE(0..255))
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The portal's Internet Network Address."
            ::= { cpqiScsiPortalAttributesEntry 6 }

        cpqiScsiPortalProtocol OBJECT-TYPE
            SYNTAX INTEGER
            {
               icmp(1),
               igmp(2),
               ggp(3),
               ip(4),
               st(5),
               tcp(6)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The portal's transport protocol. The following values are defined:
                 icmp(1)  Internet Control Message
                 igmp(2)  Internet Group Management
                 ggp(3)   Gateway-to-Gateway
                 ip(4)    IP in IP (encapsulation)
                 st(5)    Stream
                 tcp(6)   Transmission Control"
            DEFVAL { tcp }
            ::= { cpqiScsiPortalAttributesEntry 7 }

        cpqiScsiPortalMaxRecvDataSegLength OBJECT-TYPE
            SYNTAX INTEGER(512..16777215)
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The maximum PDU length this portal can receive.
                This may be constrained by hardware characteristics
                and individual implementations may chose not to
                allow this object to be changed."
            DEFVAL { 8192 }
            ::= { cpqiScsiPortalAttributesEntry 8 }

        cpqiScsiPortalPrimaryHdrDigest OBJECT-TYPE
            SYNTAX INTEGER
            {
               none(1),
               other(2),
               noDigest(3),
               crc32c(4)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The preferred header digest for this portal."
            DEFVAL { crc32c }
            ::= { cpqiScsiPortalAttributesEntry 9 }

        cpqiScsiPortalPrimaryDataDigest OBJECT-TYPE
            SYNTAX INTEGER
            {
               none(1),
               other(2),
               noDigest(3),
               crc32c(4)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The preferred data digest method for this portal."
            DEFVAL { crc32c }
            ::= { cpqiScsiPortalAttributesEntry 10 }

        cpqiScsiPortalSecondaryHdrDigest OBJECT-TYPE
            SYNTAX INTEGER
            {
               none(1),
               other(2),
               noDigest(3),
               crc32c(4)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "An alternate header digest preference for this portal."
            DEFVAL { noDigest }
            ::= { cpqiScsiPortalAttributesEntry 11 }

        cpqiScsiPortalSecondaryDataDigest OBJECT-TYPE
            SYNTAX INTEGER
            {
               none(1),
               other(2),
               noDigest(3),
               crc32c(4)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "An alternate data digest preference for this portal."
            DEFVAL { noDigest }
            ::= { cpqiScsiPortalAttributesEntry 12 }

        cpqiScsiPortalRecvMarker OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "This object indicates whether or not this portal will
                request markers in it's incoming data stream."
            DEFVAL { false }
            ::= { cpqiScsiPortalAttributesEntry 13 }

-- ****************************************************************************
--    cpqiScsiTgtPortalAttributesTable
--    =============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiTargetPortal Group                (1.3.6.1.4.1.232.169.2.4)
--         cpqiScsiTgtPortalAttributesTable        (1.3.6.1.4.1.232.169.2.4.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiTgtPortalAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiTgtPortalAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of transport endpoints (using TCP or another transport
                protocol) on which this iSCSI instance listens for incoming
                connections to its targets."
            ::= { cpqiScsiTargetPortal 1 }

        cpqiScsiTgtPortalAttributesEntry OBJECT-TYPE
            SYNTAX IscsiTgtPortalAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular portal instance that is used to listen for
                incoming connections to local targets. This row is populated
                for each cpqiScsiPortalAttributesEntry row that may be used as
                a target portal."
            INDEX { cpqiScsiInstIndex, cpqiScsiPortalIndex }
            ::= { cpqiScsiTgtPortalAttributesTable 1 }

        IscsiTgtPortalAttributesEntry ::= SEQUENCE {
            cpqiScsiTgtPortalInstIndex Gauge,
            cpqiScsiTgtPortalPortalIndex Gauge,
            cpqiScsiTgtPortalPort Gauge,
            cpqiScsiTgtPortalTag INTEGER
            }

        cpqiScsiTgtPortalInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiTgtPortalAttributesEntry 1 }

        cpqiScsiTgtPortalPortalIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                transport endpoint within this iSCSI instance."
            ::= { cpqiScsiTgtPortalAttributesEntry 2 }

        cpqiScsiTgtPortalPort OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The portal's transport protocol port number on which the
                portal listens for incoming iSCSI connections when the
                portal is used as a target portal."
            ::= { cpqiScsiTgtPortalAttributesEntry 3 }

        cpqiScsiTgtPortalTag OBJECT-TYPE
            SYNTAX INTEGER(1..65535)
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The portal's aggregation tag when portal is used as
                a target portal.  Multiple-connection sessions may
                be aggregated over portals sharing an identical
                aggregation tag."
            ::= { cpqiScsiTgtPortalAttributesEntry 4 }


-- ****************************************************************************
--    cpqiScsiIntrPortalAttributesTable
--    ==============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiInitiatorPortal Group             (1.3.6.1.4.1.232.169.2.5)
--         cpqiScsiIntrPortalAttributesTable       (1.3.6.1.4.1.232.169.2.5.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiIntrPortalAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiIntrPortalAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of Internet Network Addresses (using TCP or another
                transport protocol) from which this iSCSI instance may
                initiate connections to other targets."
            ::= { cpqiScsiInitiatorPortal 1 }

        cpqiScsiIntrPortalAttributesEntry OBJECT-TYPE
            SYNTAX IscsiIntrPortalAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular portal instance that is used to initiate
                connections to iSCSI targets.  This row is populated for
                each cpqiScsiPortalAttributesEntry row that may be used as an
                initiator portal."
            INDEX { cpqiScsiInstIndex, cpqiScsiPortalIndex }
            ::= { cpqiScsiIntrPortalAttributesTable 1 }

        IscsiIntrPortalAttributesEntry ::= SEQUENCE {
            cpqiScsiIntrPortalInstIndex Gauge,
            cpqiScsiIntrPortalPortalIndex Gauge,
            cpqiScsiIntrPortalTag INTEGER
            }

        cpqiScsiIntrPortalInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiIntrPortalAttributesEntry 1 }

        cpqiScsiIntrPortalPortalIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                transport endpoint within this iSCSI instance."
            ::= { cpqiScsiIntrPortalAttributesEntry 2 }

        cpqiScsiIntrPortalTag OBJECT-TYPE
            SYNTAX INTEGER(1..65535)
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The portal's aggregation tag when the portal is used as
                an initiator portal.  Multiple-connection sessions may
                be aggregated over portals sharing an identical
                aggregation tag."
            ::= { cpqiScsiIntrPortalAttributesEntry 3 }

-- ****************************************************************************
--    cpqiScsiNodeAttributesTable
--    ==============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiNode Group                        (1.3.6.1.4.1.232.169.2.6)
--         cpqiScsiNodeAttributesTable             (1.3.6.1.4.1.232.169.2.6.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiNodeAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiNodeAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of iSCSI nodes belonging to each iSCSI instance
                present on the local system.  An iSCSI node can act as
                an initiator, a target, or both."
            ::= { cpqiScsiNode 1 }

        cpqiScsiNodeAttributesEntry OBJECT-TYPE
            SYNTAX IscsiNodeAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular iSCSI node."
            INDEX { cpqiScsiNodeInstIndex, cpqiScsiNodeNodeIndex }
            ::= { cpqiScsiNodeAttributesTable 1 }

        IscsiNodeAttributesEntry ::= SEQUENCE {
            cpqiScsiNodeInstIndex Gauge,
            cpqiScsiNodeNodeIndex Gauge,
            cpqiScsiNodeName DisplayString,
            cpqiScsiNodeAlias DisplayString,
            cpqiScsiNodeRoles OCTET STRING,
            cpqiScsiNodeTransportType OBJECT IDENTIFIER,
            cpqiScsiNodeInitialR2T INTEGER,
            cpqiScsiNodeImmediateData INTEGER,
            cpqiScsiNodeMaxOutstandingR2T INTEGER,
            cpqiScsiNodeFirstBurstLength INTEGER,
            cpqiScsiNodeMaxBurstLength INTEGER,
            cpqiScsiNodeMaxConnections INTEGER,
            cpqiScsiNodeDataSequenceInOrder INTEGER,
            cpqiScsiNodeDataPDUInOrder INTEGER,
            cpqiScsiNodeDefaultTime2Wait INTEGER,
            cpqiScsiNodeDefaultTime2Retain INTEGER,
            cpqiScsiNodeErrorRecoveryLevel INTEGER
            }

        cpqiScsiNodeInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiNodeAttributesEntry 1 }

        cpqiScsiNodeNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiNodeAttributesEntry 2 }

        cpqiScsiNodeName OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A character string that is a globally unique identifier for
                this iSCSI node.  The node name is independent of the location
                of the node, and can be resolved into a set of addresses
                through various discovery services."
            ::= { cpqiScsiNodeAttributesEntry 3 }

        cpqiScsiNodeAlias OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A character string that is a human-readable name or
                description of the iSCSI node.  If configured, this alias
                may be communicated to the initiator or target node at
                the remote end of the connection during a Login Request
                or Response message.  This string is not used as an
                identifier, but can be displayed by the system's user
                interface in a list of initiators and/or targets to
                which it is connected.

                If no alias is configured, this object is a zero-length
                string."
            ::= { cpqiScsiNodeAttributesEntry 4 }

        cpqiScsiNodeRoles OBJECT-TYPE
            SYNTAX OCTET STRING(SIZE(1..2))
                -- BITS are:
                --   targetTypeNode(0)
                --   initiatorTypeNode(1)
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A node can operate in one or both of two roles:
                a target role and/or an initiator role. If the node
                will operate in both roles, both bits must be set.

                When a new cpqiScsiNodeAttributesEntry is to be created,
                the agent should use this object as a hint for the
                creation of a new cpqiScsiTargetAttributesEntry and/or
                cpqiScsiInitiatorAttributesEntry."
            ::= { cpqiScsiNodeAttributesEntry 5 }

        cpqiScsiNodeTransportType OBJECT-TYPE
            SYNTAX OBJECT IDENTIFIER
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A pointer to the corresponding scsiTrnspt object in
                the SCSI MIB (which in turn points to this iSCSI node)
                allowing management stations to locate the SCSI-level
                Device that is represented by this cpqiScsiNode."
            REFERENCE
                "SCSI-MIB"
            ::= { cpqiScsiNodeAttributesEntry 6 }

        cpqiScsiNodeInitialR2T OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object indicates the InitialR2T preference for this
                node:
                True = YES,
                False = will try to negotiate NO, will accept YES "
            DEFVAL { true }
            ::= { cpqiScsiNodeAttributesEntry 7 }

        cpqiScsiNodeImmediateData OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "This object indicates ImmediateData preference for this
                node
                True = YES (but will accept NO),
                False = NO "
            DEFVAL { true }
            ::= { cpqiScsiNodeAttributesEntry 8 }

        cpqiScsiNodeMaxOutstandingR2T OBJECT-TYPE
            SYNTAX INTEGER(1..65535)
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "Maximum number of outstanding R2Ts allowed per task."
            DEFVAL { 1 }
            ::= { cpqiScsiNodeAttributesEntry 9 }

        cpqiScsiNodeFirstBurstLength OBJECT-TYPE
            SYNTAX INTEGER(512..16777215)
        --  Units
        --    bytes
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The maximum length (bytes) supported for unsolicited data
                to/from this node."
            DEFVAL { 65536 }
            ::= { cpqiScsiNodeAttributesEntry 10 }

        cpqiScsiNodeMaxBurstLength OBJECT-TYPE
            SYNTAX INTEGER(512..16777215)
        --  Units
        --    bytes
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The maximum number of bytes which can be sent within
                a single sequence of Data-In or Data-Out PDUs."
            DEFVAL { 262144 }
            ::= { cpqiScsiNodeAttributesEntry 11 }

        cpqiScsiNodeMaxConnections OBJECT-TYPE
            SYNTAX INTEGER(1..65535)
        --  Units
        --    connections
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The maximum number of connections allowed in each
                session to and/or from this node."
            DEFVAL { 1 }
            ::= { cpqiScsiNodeAttributesEntry 12 }

        cpqiScsiNodeDataSequenceInOrder OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The DataSequenceInOrder preference of this node.
                False (=No) indicates that iSCSI data PDU sequences may
                be transferred in any order.  True (=Yes) indicates that
                data PDU sequences must be transferred using
                continuously increasing offsets, except during
                error recovery."
            DEFVAL { true }
            ::= { cpqiScsiNodeAttributesEntry 13 }

        cpqiScsiNodeDataPDUInOrder OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The DataPDUInOrder preference of this node.
                False (=No) indicates that iSCSI data PDUs within sequences
                may be in any order.  True (=Yes) indicates that data PDUs
                within sequences must be at continuously increasing
                addresses, with no gaps or overlay between PDUs."
            DEFVAL { true }
            ::= { cpqiScsiNodeAttributesEntry 14 }

        cpqiScsiNodeDefaultTime2Wait OBJECT-TYPE
            SYNTAX INTEGER(0..3600)
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The DefaultTime2Wait preference of this node.
                This is the minimum time, in seconds, to wait before attempting
                an explicit/implicit logout or active task reassignment after
                an unexpected connection termination or a connection reset."
            DEFVAL { 2 }
            ::= { cpqiScsiNodeAttributesEntry 15 }

        cpqiScsiNodeDefaultTime2Retain OBJECT-TYPE
            SYNTAX INTEGER(0..3600)
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The DefaultTime2Retain preference of this node.
                This is the maximum time, in seconds after an initial wait
                (Time2Wait), before which an active task reassignment is still
                possible after an unexpected connection termination or a
                connection reset."
            DEFVAL { 20 }
            ::= { cpqiScsiNodeAttributesEntry 16 }

        cpqiScsiNodeErrorRecoveryLevel OBJECT-TYPE
            SYNTAX INTEGER(0..255)
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The ErrorRecoveryLevel preference of this node.
                Currently, only 0-2 are valid.
                This object is designed to accommodate future error recover
                levels.
                Higher error recovery levels imply support in addition to
                support for the lower error level functions.  In other words,
                error level 2 implies support for levels 0-1, since those
                functions are subsets of error level 2."
            DEFVAL { 0 }
            ::= { cpqiScsiNodeAttributesEntry 17 }

-- ****************************************************************************
--    cpqiScsiTargetAttributesTable
--    ==========================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiTarget Group                      (1.3.6.1.4.1.232.169.2.7)
--         cpqiScsiTargetAttributesTable           (1.3.6.1.4.1.232.169.2.7.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiTargetAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiTargetAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular node that can take on a target role."
            ::= { cpqiScsiTarget 1 }

        cpqiScsiTargetAttributesEntry OBJECT-TYPE
            SYNTAX IscsiTargetAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular target."
            INDEX { cpqiScsiTgtInstIndex, cpqiScsiTgtNodeIndex }
            ::= { cpqiScsiTargetAttributesTable 1 }

        IscsiTargetAttributesEntry ::= SEQUENCE {
            cpqiScsiTgtInstIndex Gauge,
            cpqiScsiTgtNodeIndex Gauge,
            cpqiScsiTgtLoginFailures Counter,
            cpqiScsiTgtLastFailureTime TimeTicks,
            cpqiScsiTgtLastFailureType OBJECT IDENTIFIER,
            cpqiScsiTgtLastIntrFailureName DisplayString,
            cpqiScsiTgtLastIntrFailureAddrType INTEGER,
            cpqiScsiTgtLastIntrFailureAddr OCTET STRING
            }

        cpqiScsiTgtInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiTargetAttributesEntry 1 }

        cpqiScsiTgtNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiTargetAttributesEntry 2 }

        cpqiScsiTgtLoginFailures OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed login attempts
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object counts the number of times a login attempt to this
                local target has failed."
            ::= { cpqiScsiTargetAttributesEntry 3 }

        cpqiScsiTgtLastFailureTime OBJECT-TYPE
            SYNTAX TimeTicks
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The timestamp of the most recent failure of a login attempt
                to this target.  A value of zero indicates that no such
                failures have occurred."
            ::= { cpqiScsiTargetAttributesEntry 4 }

        cpqiScsiTgtLastFailureType OBJECT-TYPE
            SYNTAX OBJECT IDENTIFIER
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The type of the most recent failure of a login attempt
                to this target, represented as the OID of the counter
                object in cpqiScsiTargetLoginStatsTable for which the
                relevant instance was incremented.  A value of 0.0
                indicates a type which is not represented by any of
                the counters in cpqiScsiTargetLoginStatsTable."
            ::= { cpqiScsiTargetAttributesEntry 5 }

        cpqiScsiTgtLastIntrFailureName OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An octet string giving the name of the initiator
                that failed the last login attempt."
            ::= { cpqiScsiTargetAttributesEntry 6 }

        cpqiScsiTgtLastIntrFailureAddrType OBJECT-TYPE
            SYNTAX INTEGER
            {
--               unknown(0),
               ipv4(1),
               ipv6(2),
               ipv4z(3),
               ipv6z(4),
               dns(16)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The type of Internet Network Address in
                cpqiScsiTgtLastIntrFailureAddr."
            DEFVAL { ipv4 }
            ::= { cpqiScsiTargetAttributesEntry 7 }

        cpqiScsiTgtLastIntrFailureAddr OBJECT-TYPE
            SYNTAX OCTET STRING(SIZE(0..255))
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An Internet Network Address giving the host address
                of the initiator that failed the last login attempt."
            ::= { cpqiScsiTargetAttributesEntry 8 }

-- ****************************************************************************
--    cpqiScsiTargetLoginStatsTable
--    ==========================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiTarget Group                      (1.3.6.1.4.1.232.169.2.7)
--         cpqiScsiTargetLoginStatsTable           (1.3.6.1.4.1.232.169.2.7.2)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiTargetLoginStatsTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiTargetLoginStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A table of counters which keep a record of the results
                of initiators' login attempts to this target."
            ::= { cpqiScsiTarget 2 }

        cpqiScsiTargetLoginStatsEntry OBJECT-TYPE
            SYNTAX IscsiTargetLoginStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing counters for each result of
                a login attempt to this target."
            INDEX { cpqiScsiTgtLoginInstIndex, cpqiScsiTgtLoginNodeIndex }
        -- Augments cpqiScsiTargetAttributesEntry
            ::= { cpqiScsiTargetLoginStatsTable 1 }

        IscsiTargetLoginStatsEntry ::= SEQUENCE {
            cpqiScsiTgtLoginInstIndex Gauge,
            cpqiScsiTgtLoginNodeIndex Gauge,
            cpqiScsiTgtLoginAccepts Counter,
            cpqiScsiTgtLoginOtherFails Counter,
            cpqiScsiTgtLoginRedirects Counter,
            cpqiScsiTgtLoginAuthorizeFails Counter,
            cpqiScsiTgtLoginAuthenticateFails Counter,
            cpqiScsiTgtLoginNegotiateFails Counter
            }

        cpqiScsiTgtLoginInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiTargetLoginStatsEntry 1 }

        cpqiScsiTgtLoginNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiTargetLoginStatsEntry 2 }

        cpqiScsiTgtLoginAccepts OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    successful logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Login Response PDUs with status
                0x0000, Accept Login, transmitted by this
                target."
            ::= { cpqiScsiTargetLoginStatsEntry 3 }

        cpqiScsiTgtLoginOtherFails OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The number of Login Response PDUs which were transmitted
                by this target, and which were not counted by any other
                object in the row."
            ::= { cpqiScsiTargetLoginStatsEntry 4 }

        cpqiScsiTgtLoginRedirects OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Login Response PDUs with status class 0x01,
                Redirection, transmitted by this target."
            ::= { cpqiScsiTargetLoginStatsEntry 5 }

        cpqiScsiTgtLoginAuthorizeFails OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Login Response PDUs with status 0x0202,
                Forbidden Target, transmitted by this target.

                If this counter is incremented, an cpqiScsiTgtLoginFailure
                notification should be generated."
            ::= { cpqiScsiTargetLoginStatsEntry 6 }

        cpqiScsiTgtLoginAuthenticateFails OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Login Response PDUs with status 0x0201,
                Authentication Failed, transmitted by this target

                If this counter is incremented, an cpqiScsiTgtLoginFailure
                notification should be generated."
            ::= { cpqiScsiTargetLoginStatsEntry 7 }

        cpqiScsiTgtLoginNegotiateFails OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The number of times a target has effectively refused a
                login because the parameter negotiation failed.
                [Ed. While this situation can occur, the exact mechanism
                is as yet undefined in the iSCSI Protocol Spec.]

                If this counter is incremented, an cpqiScsiTgtLoginFailure
                notification should be generated."
            ::= { cpqiScsiTargetLoginStatsEntry 8 }

-- ****************************************************************************
--    cpqiScsiTargetLogoutStatsTable
--    ==========================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiTarget Group                      (1.3.6.1.4.1.232.169.2.7)
--         cpqiScsiTargetLogoutStatsTable          (1.3.6.1.4.1.232.169.2.7.3)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiTargetLogoutStatsTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiTargetLogoutStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "When a target receives a Logout command, it responds
                with a Logout Response that carries a status code.
                This table contains counters for both normal and
                abnormal logout requests received by this target."
            ::= { cpqiScsiTarget 3 }

        cpqiScsiTargetLogoutStatsEntry OBJECT-TYPE
            SYNTAX IscsiTargetLogoutStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing counters of Logout Response
                PDUs that were received by this target."
            INDEX { cpqiScsiTgtLogoutInstIndex, cpqiScsiTgtLogoutNodeIndex }
        -- Augments cpqiScsiTargetAttributesEntry
            ::= { cpqiScsiTargetLogoutStatsTable 1 }

        IscsiTargetLogoutStatsEntry ::= SEQUENCE {
            cpqiScsiTgtLogoutInstIndex Gauge,
            cpqiScsiTgtLogoutNodeIndex Gauge,
            cpqiScsiTgtLogoutNormals Counter,
            cpqiScsiTgtLogoutOthers Counter
            }

        cpqiScsiTgtLogoutInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiTargetLogoutStatsEntry 1 }

        cpqiScsiTgtLogoutNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiTargetLogoutStatsEntry 2 }

        cpqiScsiTgtLogoutNormals OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    normal logouts
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Logout Command PDUs received by this target,
                with reason code 0 (closes the session)."
            ::= { cpqiScsiTargetLogoutStatsEntry 3 }

        cpqiScsiTgtLogoutOthers OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    abnormal logouts
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Logout Command PDUs received by this target,
                with any status code other than 0."
            ::= { cpqiScsiTargetLogoutStatsEntry 4 }

-- ****************************************************************************
--    cpqiScsiTgtAuthAttributesTable
--    ===========================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiTgtAuthorization Group            (1.3.6.1.4.1.232.169.2.8)
--         cpqiScsiTgtAuthAttributesTable          (1.3.6.1.4.1.232.169.2.8.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiTgtAuthAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiTgtAuthAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of initiator identities that are authorized to
                access each target node within each iSCSI instance
                present on the local system."
            ::= { cpqiScsiTgtAuthorization 1 }

        cpqiScsiTgtAuthAttributesEntry OBJECT-TYPE
            SYNTAX IscsiTgtAuthAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information
                applicable to a particular target node's authorized
                initiator identity."
            INDEX { cpqiScsiTgtAuthInstIndex, cpqiScsiTgtAuthNodeIndex, cpqiScsiTgtAuthIndex }
            ::= { cpqiScsiTgtAuthAttributesTable 1 }

        IscsiTgtAuthAttributesEntry ::= SEQUENCE {
            cpqiScsiTgtAuthInstIndex Gauge,
            cpqiScsiTgtAuthNodeIndex Gauge,
            cpqiScsiTgtAuthIndex Gauge,
            cpqiScsiTgtAuthRowStatus INTEGER,
            cpqiScsiTgtAuthIdentity OBJECT IDENTIFIER
            }

        cpqiScsiTgtAuthInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiTgtAuthAttributesEntry 1 }

        cpqiScsiTgtAuthNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiTgtAuthAttributesEntry 2 }

        cpqiScsiTgtAuthIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                target's authorized initiator identity within an iSCSI
                instance present on the local system."
            ::= { cpqiScsiTgtAuthAttributesEntry 3 }

        cpqiScsiTgtAuthRowStatus OBJECT-TYPE
            SYNTAX INTEGER
            {
               active(1),
               notInService(2),
               notReady(3),
               createAndGo(4),
               createAndWait(5),
               destroy(6)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The status of the row."
            ::= { cpqiScsiTgtAuthAttributesEntry 4 }

        cpqiScsiTgtAuthIdentity OBJECT-TYPE
            SYNTAX OBJECT IDENTIFIER
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "A pointer to the corresponding IPS-AUTH MIB user entry
                that will be allowed to access this iSCSI target."
            REFERENCE
                "IPS-AUTH MIB"
            ::= { cpqiScsiTgtAuthAttributesEntry 5 }

-- ****************************************************************************
--    cpqiScsiInitiatorAttributesTable
--    =============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiInitiator Group                   (1.3.6.1.4.1.232.169.2.9)
--         cpqiScsiInitiatorAttributesTable        (1.3.6.1.4.1.232.169.2.9.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiInitiatorAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiInitiatorAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of iSCSI nodes that can take on an initiator
                role, belonging to each iSCSI instance present on
                the local system."
            ::= { cpqiScsiInitiator 1 }

        cpqiScsiInitiatorAttributesEntry OBJECT-TYPE
            SYNTAX IscsiInitiatorAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information
                applicable to a particular iSCSI node that has
                initiator capabilities."
            INDEX { cpqiScsiIntrInstIndex, cpqiScsiIntrNodeIndex }
            ::= { cpqiScsiInitiatorAttributesTable 1 }

        IscsiInitiatorAttributesEntry ::= SEQUENCE {
            cpqiScsiIntrInstIndex Gauge,
            cpqiScsiIntrNodeIndex Gauge,
            cpqiScsiIntrLoginFailures Counter,
            cpqiScsiIntrLastFailureTime TimeTicks,
            cpqiScsiIntrLastFailureType OBJECT IDENTIFIER,
            cpqiScsiIntrLastTgtFailureName DisplayString,
            cpqiScsiIntrLastTgtFailureAddrType INTEGER,
            cpqiScsiIntrLastTgtFailureAddr OCTET STRING
            }

        cpqiScsiIntrInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiInitiatorAttributesEntry 1 }

        cpqiScsiIntrNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiInitiatorAttributesEntry 2 }

        cpqiScsiIntrLoginFailures OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object counts the number of times a login attempt from
                this local initiator has failed."
            ::= { cpqiScsiInitiatorAttributesEntry 3 }

        cpqiScsiIntrLastFailureTime OBJECT-TYPE
            SYNTAX TimeTicks
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The timestamp of the most recent failure of a login attempt
                from this initiator.  A value of zero indicates that no such
                failures have occurred."
            ::= { cpqiScsiInitiatorAttributesEntry 4 }

        cpqiScsiIntrLastFailureType OBJECT-TYPE
            SYNTAX OBJECT IDENTIFIER
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The type of the most recent failure of a login attempt
                from this initiator, represented as the OID of the counter
                object in cpqiScsiInitiatorLoginStatsTable for which the
                relevant instance was incremented.  A value of 0.0
                indicates a type which is not represented by any of
                the counters in cpqiScsiInitiatorLoginStatsTable."
            ::= { cpqiScsiInitiatorAttributesEntry 5 }

        cpqiScsiIntrLastTgtFailureName OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An octet string giving the name of the target that failed
                the last login attempt."
            ::= { cpqiScsiInitiatorAttributesEntry 6 }

        cpqiScsiIntrLastTgtFailureAddrType OBJECT-TYPE
            SYNTAX INTEGER
            {
--               unknown(0),
               ipv4(1),
               ipv6(2),
               ipv4z(3),
               ipv6z(4),
               dns(16)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The type of Internet Network Address in
                cpqiScsiIntrLastTgtFailureAddr."
            DEFVAL { ipv4 }
            ::= { cpqiScsiInitiatorAttributesEntry 7 }

        cpqiScsiIntrLastTgtFailureAddr OBJECT-TYPE
            SYNTAX OCTET STRING(SIZE(0..255))
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An Internet Network Address giving the host address of the
                target that failed the last login attempt."
            ::= { cpqiScsiInitiatorAttributesEntry 8 }

-- ****************************************************************************
--    cpqiScsiInitiatorLoginStatsTable
--    =============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiInitiator Group                   (1.3.6.1.4.1.232.169.2.9)
--         cpqiScsiInitiatorLoginStatsTable        (1.3.6.1.4.1.232.169.2.9.2)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiInitiatorLoginStatsTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiInitiatorLoginStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A table of counters which keep track of the results of
                this initiator's login attempts."
            ::= { cpqiScsiInitiator 2 }

        cpqiScsiInitiatorLoginStatsEntry OBJECT-TYPE
            SYNTAX IscsiInitiatorLoginStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing counters of each result
                of this initiator's login attempts."
            INDEX { cpqiScsiIntrLoginInstIndex, cpqiScsiIntrLoginNodeIndex }
        -- Augments cpqiScsiInitiatorAttributesEntry
            ::= { cpqiScsiInitiatorLoginStatsTable 1 }

        IscsiInitiatorLoginStatsEntry ::= SEQUENCE {
            cpqiScsiIntrLoginInstIndex Gauge,
            cpqiScsiIntrLoginNodeIndex Gauge,
            cpqiScsiIntrLoginAcceptRsps Counter,
            cpqiScsiIntrLoginOtherFailRsps Counter,
            cpqiScsiIntrLoginRedirectRsps Counter,
            cpqiScsiIntrLoginAuthFailRsps Counter,
            cpqiScsiIntrLoginAuthenticateFails Counter,
            cpqiScsiIntrLoginNegotiateFails Counter
            }

        cpqiScsiIntrLoginInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiInitiatorLoginStatsEntry 1 }

        cpqiScsiIntrLoginNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiInitiatorLoginStatsEntry 2 }

        cpqiScsiIntrLoginAcceptRsps OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    successful logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Login Response PDUs with status
                0x0000, Accept Login, received by this initiator."
            ::= { cpqiScsiInitiatorLoginStatsEntry 3 }

        cpqiScsiIntrLoginOtherFailRsps OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Login Response PDUs received by this
                initiator with any status code not counted in the
                objects below."
            ::= { cpqiScsiInitiatorLoginStatsEntry 4 }

        cpqiScsiIntrLoginRedirectRsps OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Login Response PDUs with status class 0x01,
                Redirection, received by this initiator."
            ::= { cpqiScsiInitiatorLoginStatsEntry 5 }

        cpqiScsiIntrLoginAuthFailRsps OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Login Response PDUs with status class 0x201,
                Authentication Failed, received by this initiator."
            ::= { cpqiScsiInitiatorLoginStatsEntry 6 }

        cpqiScsiIntrLoginAuthenticateFails OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The number of times the initiator has aborted a
                login because the target could not be authenticated.

                No response is generated.

                If this counter is incremented, an cpqiScsiIntrLoginFailure
                notification should be generated."
            ::= { cpqiScsiInitiatorLoginStatsEntry 7 }

        cpqiScsiIntrLoginNegotiateFails OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    failed logins
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The number of times the initiator has aborted a
                login because parameter negotiation with the target
                failed.

                No response is generated.

                If this counter is incremented, an cpqiScsiIntrLoginFailure
                notification should be generated."
            ::= { cpqiScsiInitiatorLoginStatsEntry 8 }

-- ****************************************************************************
--    cpqiScsiInitiatorLogoutStatsTable
--    ==============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiInitiator Group                   (1.3.6.1.4.1.232.169.2.9)
--         cpqiScsiInitiatorLogoutStatsTable       (1.3.6.1.4.1.232.169.2.9.3)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiInitiatorLogoutStatsTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiInitiatorLogoutStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "When an initiator attempts send a Logout command, the target
                responds with a Logout Response that carries a status code.
                This table contains a list of counters of Logout Response
                PDUs of each status code, that were received by each
                initiator belonging to this iSCSI instance present on this
                system."
            ::= { cpqiScsiInitiator 3 }

        cpqiScsiInitiatorLogoutStatsEntry OBJECT-TYPE
            SYNTAX IscsiInitiatorLogoutStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing counters of Logout Response
                PDUs of each status code, that were generated by this
                initiator."
            INDEX { cpqiScsiIntrLogoutInstIndex, cpqiScsiIntrLogoutNodeIndex }
        -- Augments cpqiScsiInitiatorAttributesEntry
            ::= { cpqiScsiInitiatorLogoutStatsTable 1 }

        IscsiInitiatorLogoutStatsEntry ::= SEQUENCE {
            cpqiScsiIntrLogoutInstIndex Gauge,
            cpqiScsiIntrLogoutNodeIndex Gauge,
            cpqiScsiIntrLogoutNormals Counter,
            cpqiScsiIntrLogoutOthers Counter
            }

        cpqiScsiIntrLogoutInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiInitiatorLogoutStatsEntry 1 }

        cpqiScsiIntrLogoutNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiInitiatorLogoutStatsEntry 2 }

        cpqiScsiIntrLogoutNormals OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    normal logouts
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Logout Command PDUs generated by this initiator
                with reason code 0 (closes the session)."
            ::= { cpqiScsiInitiatorLogoutStatsEntry 3 }

        cpqiScsiIntrLogoutOthers OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    abnormal logouts
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Logout Command PDUs generated by this initiator
                with any status code other than 0."
            ::= { cpqiScsiInitiatorLogoutStatsEntry 4 }

-- ****************************************************************************
--    cpqiScsiIntrAuthAttributesTable
--    ==============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiIntrAuthorization Group           (1.3.6.1.4.1.232.169.2.10)
--         cpqiScsiIntrAuthAttributesTable         (1.3.6.1.4.1.232.169.2.10.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiIntrAuthAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiIntrAuthAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of target identities which each initiator
                on the local system may access."
            ::= { cpqiScsiIntrAuthorization 1 }

        cpqiScsiIntrAuthAttributesEntry OBJECT-TYPE
            SYNTAX IscsiIntrAuthAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular initiator node's authorized target identity."
            INDEX { cpqiScsiIntrAuthInstIndex, cpqiScsiIntrAuthNodeIndex, cpqiScsiIntrAuthIndex }
            ::= { cpqiScsiIntrAuthAttributesTable 1 }

        IscsiIntrAuthAttributesEntry ::= SEQUENCE {
            cpqiScsiIntrAuthInstIndex Gauge,
            cpqiScsiIntrAuthNodeIndex Gauge,
            cpqiScsiIntrAuthIndex Gauge,
            cpqiScsiIntrAuthRowStatus INTEGER,
            cpqiScsiIntrAuthIdentity OBJECT IDENTIFIER
            }

        cpqiScsiIntrAuthInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiIntrAuthAttributesEntry 1 }

        cpqiScsiIntrAuthNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiIntrAuthAttributesEntry 2 }

        cpqiScsiIntrAuthIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a
                particular initiator node's authorized target
                identity within an iSCSI instance present on the
                local system."
            ::= { cpqiScsiIntrAuthAttributesEntry 3 }

        cpqiScsiIntrAuthRowStatus OBJECT-TYPE
            SYNTAX INTEGER
            {
               active(1),
               notInService(2),
               notReady(3),
               createAndGo(4),
               createAndWait(5),
               destroy(6)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The status of the row."
            ::= { cpqiScsiIntrAuthAttributesEntry 4 }

        cpqiScsiIntrAuthIdentity OBJECT-TYPE
            SYNTAX OBJECT IDENTIFIER
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A pointer to the corresponding IPS-AUTH MIB user entry
                to which this initiator node should attempt to establish
                an iSCSI session."
            REFERENCE
                "IPS-AUTH MIB"
            ::= { cpqiScsiIntrAuthAttributesEntry 5 }

-- ****************************************************************************
--    cpqiScsiSessionAttributesTable
--    ===========================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiSession Group                     (1.3.6.1.4.1.232.169.2.11)
--         cpqiScsiSessionAttributesTable          (1.3.6.1.4.1.232.169.2.11.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiSessionAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiSessionAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of sessions belonging to each iSCSI instance
                present on the system."
            ::= { cpqiScsiSession 1 }

        cpqiScsiSessionAttributesEntry OBJECT-TYPE
            SYNTAX IscsiSessionAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular session.

                If this session is a discovery session which is not attached
                to any particular node, the cpqiScsiNodeIndex will be zero."
            INDEX { cpqiScsiSsnInstIndex, cpqiScsiSsnNodeIndex, cpqiScsiSsnIndex }
            ::= { cpqiScsiSessionAttributesTable 1 }

        IscsiSessionAttributesEntry ::= SEQUENCE {
            cpqiScsiSsnInstIndex Gauge,
            cpqiScsiSsnNodeIndex Gauge,
            cpqiScsiSsnIndex Gauge,
            cpqiScsiSsnDirection INTEGER,
            cpqiScsiSsnInitiatorName DisplayString,
            cpqiScsiSsnTargetName DisplayString,
            cpqiScsiSsnTSIH INTEGER,
            cpqiScsiSsnISID OCTET STRING,
            cpqiScsiSsnInitiatorAlias DisplayString,
            cpqiScsiSsnTargetAlias DisplayString,
            cpqiScsiSsnInitialR2T INTEGER,
            cpqiScsiSsnImmediateData INTEGER,
            cpqiScsiSsnType INTEGER,
            cpqiScsiSsnMaxOutstandingR2T INTEGER,
            cpqiScsiSsnFirstBurstLength INTEGER,
            cpqiScsiSsnMaxBurstLength INTEGER,
            cpqiScsiSsnConnectionNumber Gauge,
            cpqiScsiSsnAuthIdentity OBJECT IDENTIFIER,
            cpqiScsiSsnDataSequenceInOrder INTEGER,
            cpqiScsiSsnDataPDUInOrder INTEGER,
            cpqiScsiSsnErrorRecoveryLevel INTEGER,
            cpqiScsiSessionId DisplayString
            }

        cpqiScsiSsnInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiSessionAttributesEntry 1 }

        cpqiScsiSsnNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiSessionAttributesEntry 2 }

        cpqiScsiSsnIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a
                particular session within an iSCSI instance present
                on the local system."
            ::= { cpqiScsiSessionAttributesEntry 3 }

        cpqiScsiSsnDirection OBJECT-TYPE
            SYNTAX INTEGER {
                inboundSession(1),
                outboundSession(2)
                }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "Direction of iSCSI session:
                InboundSession  - session is established from an external
                                  initiator to a target within this iSCSI
                                  instance.
                OutboundSession - session is established from an initiator
                                  within this iSCSI instance to an external
                                  target."
            ::= { cpqiScsiSessionAttributesEntry 4 }

        cpqiScsiSsnInitiatorName OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A string describing the name of initiator node of the
                 iscsi session.
                 
                 This field will be a null (size 0) string if this session 
                 is a discovery session that does not specify a particular 
                 initiator."
            ::= { cpqiScsiSessionAttributesEntry 5 }

        cpqiScsiSsnTargetName OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A string describing the name of target node of the
                 iscsi session.
                 
                 This field will be a null (size 0) string if this session 
                 is a discovery session that does not specify a particular 
                 target."
            ::= { cpqiScsiSessionAttributesEntry 6 }

        cpqiScsiSsnTSIH OBJECT-TYPE
            SYNTAX INTEGER(1..65535)
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The target-defined identification handle for this session."
            ::= { cpqiScsiSessionAttributesEntry 7 }

        cpqiScsiSsnISID OBJECT-TYPE
            SYNTAX OCTET STRING(SIZE(6))
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The initiator-defined portion of the iSCSI Session ID."
            ::= { cpqiScsiSessionAttributesEntry 8 }

        cpqiScsiSsnInitiatorAlias OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An octet string that gives the alias communicated by the
                initiator end of the session during the login phase.

                If no alias exists, the value is a zero-length string."
            ::= { cpqiScsiSessionAttributesEntry 9 }

        cpqiScsiSsnTargetAlias OBJECT-TYPE
            SYNTAX DisplayString
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An octet string that gives the alias communicated by the
                target end of the session during the login phase.

                If no alias exists, the value is a zero-length string."
            ::= { cpqiScsiSessionAttributesEntry 10 }

        cpqiScsiSsnInitialR2T OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "If set to true, indicates that the initiator must wait
                for an R2T before sending to the target.  If set to false,
                the initiator may send data immediately, within limits set
                by cpqiScsiSsnFirstBurstLength and the expected data transfer
                length of the request.

                Default is true."
            ::= { cpqiScsiSessionAttributesEntry 11 }

        cpqiScsiSsnImmediateData OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "Indicates whether the initiator and target have agreed to
                support immediate data on this session."
            ::= { cpqiScsiSessionAttributesEntry 12 }

        cpqiScsiSsnType OBJECT-TYPE
            SYNTAX INTEGER {
                normalSession(1),
                discoverySession(2)
                }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "Type of iSCSI session:
                normalSession    - session is a normal iSCSI session
                discoverySession - session is being used only for discovery."
            DEFVAL { normalSession }
            ::= { cpqiScsiSessionAttributesEntry 13 }

        cpqiScsiSsnMaxOutstandingR2T OBJECT-TYPE
            SYNTAX INTEGER(1..65535)
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The maximum number of outstanding request-to-transmit
                (R2T)s per task within this session."
            ::= { cpqiScsiSessionAttributesEntry 14 }

        cpqiScsiSsnFirstBurstLength OBJECT-TYPE
            SYNTAX INTEGER(512..16777215)
        --  Units
        --    bytes
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The maximum length supported for unsolicited data sent
                within this session."
            DEFVAL { 65536 }
            ::= { cpqiScsiSessionAttributesEntry 15 }

        cpqiScsiSsnMaxBurstLength OBJECT-TYPE
            SYNTAX INTEGER(512..16777215)
        --  Units
        --    bytes
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The maximum number of bytes which can be sent within
                a single sequence of Data-In or Data-Out PDUs."
            DEFVAL { 262144 }
            ::= { cpqiScsiSessionAttributesEntry 16 }

        cpqiScsiSsnConnectionNumber OBJECT-TYPE
            SYNTAX Gauge
        --  Units
        --    connections
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The number of transport protocol connections that currently
                belong to this session."
            ::= { cpqiScsiSessionAttributesEntry 17 }

        cpqiScsiSsnAuthIdentity OBJECT-TYPE
            SYNTAX OBJECT IDENTIFIER
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object contains a row in the IPS-AUTH MIB
                which identifies the authentication method
                being used on this session, as communicated
                during the login phase."
            REFERENCE
                "IPS-AUTH MIB"
            ::= { cpqiScsiSessionAttributesEntry 18 }

        cpqiScsiSsnDataSequenceInOrder OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "False indicates that iSCSI data PDU sequences may
                be transferred in any order.  True indicates that
                data PDU sequences must be transferred using
                continuously increasing offsets, except during
                error recovery."
            ::= { cpqiScsiSessionAttributesEntry 19 }

        cpqiScsiSsnDataPDUInOrder OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "False indicates that iSCSI data PDUs within sequences
                may be in any order.  True indicates that data PDUs
                within sequences must be at continuously increasing
                addresses, with no gaps or overlay between PDUs.

                Default is true."
            ::= { cpqiScsiSessionAttributesEntry 20 }

        cpqiScsiSsnErrorRecoveryLevel OBJECT-TYPE
            SYNTAX INTEGER(0..255)
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The level of error recovery negotiated between
                the initiator and the target.  Higher numbers
                represent more detailed recovery schemes."
            ::= { cpqiScsiSessionAttributesEntry 21 }

        cpqiScsiSessionId OBJECT-TYPE
            SYNTAX DisplayString (SIZE (0..255))
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A string describing the session ID of this
                 iscsi session."
            ::= { cpqiScsiSessionAttributesEntry 22 }

-- ****************************************************************************
--    cpqiScsiSessionStatsTable
--    ======================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiSession Group                     (1.3.6.1.4.1.232.169.2.11)
--         cpqiScsiSessionStatsTable               (1.3.6.1.4.1.232.169.2.11.2)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiSessionStatsTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiSessionStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of general iSCSI traffic counters for each of the
                sessions present on the system."
            ::= { cpqiScsiSession 2 }

        cpqiScsiSessionStatsEntry OBJECT-TYPE
            SYNTAX IscsiSessionStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing general iSCSI traffic counters
                for a particular session."
            INDEX { cpqiScsiSsnStatInstIndex, cpqiScsiSsnStatNodeIndex, cpqiScsiSsnSessionIndex }
        -- Augments cpqiScsiSessionAttributesEntry
            ::= { cpqiScsiSessionStatsTable 1 }

        IscsiSessionStatsEntry ::= SEQUENCE {
            cpqiScsiSsnStatInstIndex Gauge,
            cpqiScsiSsnStatNodeIndex Gauge,
            cpqiScsiSsnSessionIndex Gauge,
            cpqiScsiSsnCmdPDUs Counter,
            cpqiScsiSsnRspPDUs Counter,
            cpqiScsiSsnTxDataOctets Counter,
            cpqiScsiSsnRxDataOctets Counter,
            cpqiScsiSsnLCTxDataOctets Counter,
            cpqiScsiSsnLCRxDataOctets Counter
            }

        cpqiScsiSsnStatInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiSessionStatsEntry 1 }

        cpqiScsiSsnStatNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiSessionStatsEntry 2 }

        cpqiScsiSsnSessionIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a
                particular session within an iSCSI instance present
                on the local system."
            ::= { cpqiScsiSessionStatsEntry 3 }

        cpqiScsiSsnCmdPDUs OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    PDUs
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Command PDUs transferred on this session."
            ::= { cpqiScsiSessionStatsEntry 4 }

        cpqiScsiSsnRspPDUs OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    PDUs
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of Response PDUs transferred on this session."
            ::= { cpqiScsiSessionStatsEntry 5 }

        cpqiScsiSsnTxDataOctets OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    octets
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The cpqiScsiSsnTxDataOctets and the cpqiScsiSsnLCTxDataOctets together shows
                 the count of data octets that were transmitted by the local iSCSI node
                 on this session.

                 The actual count of data octets equals the cpqiScsiSsnTxDataOctets times
                 2^32 plus the cpqiScsiSsnLCTxDataOctets."
            ::= { cpqiScsiSessionStatsEntry 6 }

        cpqiScsiSsnRxDataOctets OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    octets
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The cpqiScsiSsnRxDataOctets and the cpqiScsiSsnLCRxDataOctets together shows
                 the count of data octets that were received by the local iSCSI node
                 on this session.

                 The actual count of data octets equals the cpqiScsiSsnRxDataOctets times
                 2^32 plus the cpqiScsiSsnLCRxDataOctets."
            ::= { cpqiScsiSessionStatsEntry 7 }

        cpqiScsiSsnLCTxDataOctets OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    octets
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A Low Capacity shadow object of cpqiScsiSsnTxDataOctets
                for those systems that don't support Counter64."
            ::= { cpqiScsiSessionStatsEntry 8 }

        cpqiScsiSsnLCRxDataOctets OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    octets
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "A Low Capacity shadow object of cpqiScsiSsnRxDataOctets
                for those systems that don't support Counter64."
            ::= { cpqiScsiSessionStatsEntry 9 }

-- ****************************************************************************
--    cpqiScsiSessionCxnErrorStatsTable
--    ==============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiSession Group                     (1.3.6.1.4.1.232.169.2.11)
--         cpqiScsiSessionCxnErrorStatsTable       (1.3.6.1.4.1.232.169.2.11.3)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiSessionCxnErrorStatsTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiSessionCxnErrorStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of error counters for each of the sessions
                present on this system."
            ::= { cpqiScsiSession 3 }

        cpqiScsiSessionCxnErrorStatsEntry OBJECT-TYPE
            SYNTAX IscsiSessionCxnErrorStatsEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing error counters for
                a particular session."
            INDEX { cpqiScsiSsnCxnInstIndex, cpqiScsiSsnCxnNodeIndex, cpqiScsiSsnCxnIndex }
        -- Augments cpqiScsiSessionAttributesEntry
            ::= { cpqiScsiSessionCxnErrorStatsTable 1 }

        IscsiSessionCxnErrorStatsEntry ::= SEQUENCE {
            cpqiScsiSsnCxnInstIndex Gauge,
            cpqiScsiSsnCxnNodeIndex Gauge,
            cpqiScsiSsnCxnIndex Gauge,
            cpqiScsiSsnCxnDigestErrors Counter,
            cpqiScsiSsnCxnTimeoutErrors Counter
            }

        cpqiScsiSsnCxnInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiSessionCxnErrorStatsEntry 1 }

        cpqiScsiSsnCxnNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiSessionCxnErrorStatsEntry 2 }

        cpqiScsiSsnCxnIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a
                particular session within an iSCSI instance present
                on the local system."
            ::= { cpqiScsiSessionCxnErrorStatsEntry 3 }

        cpqiScsiSsnCxnDigestErrors OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    PDUs
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of PDUs which were received on the session and
                contained header or data digest errors."
            ::= { cpqiScsiSessionCxnErrorStatsEntry 4 }

        cpqiScsiSsnCxnTimeoutErrors OBJECT-TYPE
            SYNTAX Counter
        --  Units
        --    sequences
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The count of connections within this session
                which have been terminated due to timeout."
            ::= { cpqiScsiSessionCxnErrorStatsEntry 5 }

-- ****************************************************************************
--    cpqiScsiConnectionAttributesTable
--    ==============================
--
--    The iSCSI MIB                             (1.3.6.1.4.1.232.169)
--      cpqiScsiObjects Group                      (1.3.6.1.4.1.232.169.2)
--       cpqiScsiConnection Group                  (1.3.6.1.4.1.232.169.2.12)
--         cpqiScsiConnectionAttributesTable       (1.3.6.1.4.1.232.169.2.12.1)
--  This group describes the interface to the
--
--  Implementation of the group is mandatory for all
--  agents that support the iSCSI MIB.
--
-- ****************************************************************************
        cpqiScsiConnectionAttributesTable OBJECT-TYPE
            SYNTAX SEQUENCE OF IscsiConnectionAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "A list of connections belonging to each iSCSI instance
                present on the system."
            ::= { cpqiScsiConnection 1 }

        cpqiScsiConnectionAttributesEntry OBJECT-TYPE
            SYNTAX IscsiConnectionAttributesEntry
            ACCESS not-accessible
            STATUS mandatory
            DESCRIPTION
                "An entry (row) containing management information applicable
                to a particular connection."
            INDEX { cpqiScsiCxnAttrInstIndex, cpqiScsiCxnAttrNodeIndex, cpqiScsiCxnAttrSessionIndex, cpqiScsiCxnAttrIndex }
            ::= { cpqiScsiConnectionAttributesTable 1 }

        IscsiConnectionAttributesEntry ::= SEQUENCE {
            cpqiScsiCxnAttrInstIndex Gauge,
            cpqiScsiCxnAttrNodeIndex Gauge,
            cpqiScsiCxnAttrSessionIndex Gauge,
            cpqiScsiCxnAttrIndex Gauge,
            cpqiScsiCxnAttrCid INTEGER,
            cpqiScsiCxnAttrState INTEGER,
            cpqiScsiCxnAttrLocalAddrType INTEGER,
            cpqiScsiCxnAttrLocalAddr OCTET STRING,
            cpqiScsiCxnAttrProtocol INTEGER,
            cpqiScsiCxnAttrLocalPort Gauge,
            cpqiScsiCxnAttrRemoteAddrType INTEGER,
            cpqiScsiCxnAttrRemoteAddr OCTET STRING,
            cpqiScsiCxnAttrRemotePort Gauge,
            cpqiScsiCxnAttrMaxRecvDataSegLength INTEGER,
            cpqiScsiCxnAttrMaxXmitDataSegLength INTEGER,
            cpqiScsiCxnAttrHeaderIntegrity INTEGER,
            cpqiScsiCxnAttrDataIntegrity INTEGER,
            cpqiScsiCxnAttrRecvMarker INTEGER,
            cpqiScsiCxnAttrSendMarker INTEGER,
            cpqiScsiCxnAttrVersionActive INTEGER
            }

        cpqiScsiCxnAttrInstIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                iSCSI instance."
            ::= { cpqiScsiConnectionAttributesEntry 1 }

        cpqiScsiCxnAttrNodeIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a particular
                node within an iSCSI instance present on the local system."
            ::= { cpqiScsiConnectionAttributesEntry 2 }

        cpqiScsiCxnAttrSessionIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a
                particular session within an iSCSI instance present
                on the local system."
            ::= { cpqiScsiConnectionAttributesEntry 3 }

        cpqiScsiCxnAttrIndex OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "An arbitrary integer used to uniquely identify a
                particular connection of a particular session within
                an iSCSI instance present on the local system."
            ::= { cpqiScsiConnectionAttributesEntry 4 }

        cpqiScsiCxnAttrCid OBJECT-TYPE
            SYNTAX INTEGER(1..65535)
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The iSCSI Connection ID for this connection."
            ::= { cpqiScsiConnectionAttributesEntry 5 }

        cpqiScsiCxnAttrState OBJECT-TYPE
            SYNTAX INTEGER {
                login(1),
                full(2),
                logout(3)
                }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The current state of this connection, from an iSCSI negotiation
                point of view.  Here are the states:

                login  - The transport protocol connection has been established,
                         but a valid iSCSI login response with the final bit set
                         has not been sent or received.
                full   - A valid iSCSI login response with the final bit set
                         has been sent or received.
                logout - A valid iSCSI logout command has been sent or
                         received, but the transport protocol connection has
                         not yet been closed."
            ::= { cpqiScsiConnectionAttributesEntry 6 }

        cpqiScsiCxnAttrLocalAddrType OBJECT-TYPE
            SYNTAX INTEGER
            {
--               unknown(0),
               ipv4(1),
               ipv6(2),
               ipv4z(3),
               ipv6z(4),
               dns(16)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The type of Internet Network Address in cpqiScsiCxnLocalAddr."
            DEFVAL { ipv4 }
            ::= { cpqiScsiConnectionAttributesEntry 7 }

        cpqiScsiCxnAttrLocalAddr OBJECT-TYPE
            SYNTAX OCTET STRING(SIZE(0..255))
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The local Internet Network Address used by this connection."
            ::= { cpqiScsiConnectionAttributesEntry 8 }

        cpqiScsiCxnAttrProtocol OBJECT-TYPE
            SYNTAX INTEGER
            {
               icmp(1),
               igmp(2),
               ggp(3),
               ip(4),
               st(5),
               tcp(6)
            }
            ACCESS read-write
            STATUS mandatory
            DESCRIPTION
                "The transport protocol over which this connection is running.
                 The following values are defined:
                 icmp(1)  Internet Control Message
                 igmp(2)  Internet Group Management
                 ggp(3)   Gateway-to-Gateway
                 ip(4)    IP in IP (encapsulation)
                 st(5)    Stream
                 tcp(6)   Transmission Control"
            DEFVAL { tcp }
            ::= { cpqiScsiConnectionAttributesEntry 9 }

        cpqiScsiCxnAttrLocalPort OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The local transport protocol port used by this connection."
            ::= { cpqiScsiConnectionAttributesEntry 10 }

        cpqiScsiCxnAttrRemoteAddrType OBJECT-TYPE
            SYNTAX INTEGER
            {
----               unknown(0),
               ipv4(1),
               ipv6(2),
               ipv4z(3),
               ipv6z(4),
               dns(16)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The type of Internet Network Address in cpqiScsiCxnRemoteAddr."
            DEFVAL { ipv4 }
            ::= { cpqiScsiConnectionAttributesEntry 11 }

        cpqiScsiCxnAttrRemoteAddr OBJECT-TYPE
            SYNTAX OCTET STRING(SIZE(0..255))
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The remote Internet Network Address used by this connection."
            ::= { cpqiScsiConnectionAttributesEntry 12 }

        cpqiScsiCxnAttrRemotePort OBJECT-TYPE
            SYNTAX Gauge
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The remote transport protocol port used by this connection."
            ::= { cpqiScsiConnectionAttributesEntry 13 }

        cpqiScsiCxnAttrMaxRecvDataSegLength OBJECT-TYPE
            SYNTAX INTEGER(512..16777215)
        --  Units
        --    bytes
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The maximum data payload size supported for command
                or data PDUs able to be received on this connection."
            DEFVAL { 8192 }
            ::= { cpqiScsiConnectionAttributesEntry 14 }

        cpqiScsiCxnAttrMaxXmitDataSegLength OBJECT-TYPE
            SYNTAX INTEGER(512..16777215)
        --  Units
        --    bytes
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "The maximum data payload size supported for command
                or data PDUs to be sent on this connection."
            DEFVAL { 8192 }
            ::= { cpqiScsiConnectionAttributesEntry 15 }

        cpqiScsiCxnAttrHeaderIntegrity OBJECT-TYPE
            SYNTAX INTEGER
            {
               none(1),
               other(2),
               noDigest(3),
               crc32c(4)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object identifies the iSCSI header
                digest scheme in use within this connection."
            ::= { cpqiScsiConnectionAttributesEntry 16 }

        cpqiScsiCxnAttrDataIntegrity OBJECT-TYPE
            SYNTAX INTEGER
            {
               none(1),
               other(2),
               noDigest(3),
               crc32c(4)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object identifies the iSCSI data
                digest scheme in use within this connection."
            ::= { cpqiScsiConnectionAttributesEntry 17 }

        cpqiScsiCxnAttrRecvMarker OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object indicates whether or not this connection
                is receiving markers in in its incoming data stream."
            DEFVAL { false }
            ::= { cpqiScsiConnectionAttributesEntry 18 }

        cpqiScsiCxnAttrSendMarker OBJECT-TYPE
            SYNTAX INTEGER
            {
               true(1),
               false(2)
            }
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "This object indicates whether or not this connection
                is inserting markers in in its outgoing data stream."
            DEFVAL { false }
            ::= { cpqiScsiConnectionAttributesEntry 19 }

        cpqiScsiCxnAttrVersionActive OBJECT-TYPE
            SYNTAX INTEGER(0..255)
            ACCESS read-only
            STATUS mandatory
            DESCRIPTION
                "Active version number of the iSCSI specification negotiated
                on this connection."
            ::= { cpqiScsiConnectionAttributesEntry 20 }



-- ****************************************************************************
--  iSCSI Trap Definitions
--  ======================
--
--  The SNMP trap messages must not be bigger than 484 octets (bytes).
--
--  Trap support in an Agentless Management Service (AMS) implementation is 
--  optional. AMS implementation may support all, some, or none of the traps.
--  If traps are supported, The user should be provided with the option of
--  disabling traps.
--
-- **************************************************************************

    cpqiScsiLinkUp TRAP-TYPE
        ENTERPRISE compaq
        VARIABLES  { sysName, cpqHoTrapFlags, cpqiScsiInstDescr }

        DESCRIPTION
            "iSCSI Link Up.

	     This trap will be sent any time an iSCSI session is up.

             This can be caused when a iSCSI initiator/target session is configured
             or when an existing iSCSI initiator/target session that was disconnected
             is restored.

             User Action: None required."

             --#TYPE "iSCSI Link Up Trap (169001)"
             --#SUMMARY "iSCSI Link up."
             --#SEVERITY INFORMATIONAL
             --#TIMEINDEX 99
             --#SIMPLE_SEVERITY OK
             --#HWSTATUS_CATEGORY STORAGE
             
        ::= 169001

    cpqiScsiLinkDown TRAP-TYPE
        ENTERPRISE compaq
        VARIABLES  { sysName, cpqHoTrapFlags, cpqiScsiInstDescr }

        DESCRIPTION
            "iSCSI Link Down.

	     This trap will be sent any time an iSCSI session is down.

             This can be caused by loss of session due to a disabled 
             iSCSI initiator/target session or because the the iSCSI initiator driver
             was uninstalled.

             User Action: Check the iSCSI initiator driver status or iSCSI initiator/target 
             configuration. If no problems are found, the iSCSI initiator driver may need 
             need to be installed or a iSCSI session may need to be configured on initiator 
             and target system."

             --#TYPE "iSCSI Link Down Trap (169002)"
             --#SUMMARY "iSCSI link is down."
             --#SEVERITY MAJOR
             --#TIMEINDEX 99
             --#VARBINDSEVERITY 2
             --#SIMPLE_SEVERITY MAJOR
             --#HWSTATUS_CATEGORY STORAGE
             --#ACTION "Check the iSCSI initiator driver status or iSCSI initiator/target configuration. If no problems are found, the iSCSI initiator driver may need need to be installed or a iSCSI session may need to be configured on initiator and target system."
             
        ::= 169002

END
