-- *********************************************************************
-- CISCO-ISCSI-MIB.my: iSCSI (SCSI over TCP) Mib
--
-- October 2002, Vinay Gaonkar
--
-- Copyright (c) 2002 by cisco Systems, Inc.
-- All rights reserved.
-- 
-- *********************************************************************
-- This MIB module is based on the Internet Draft 
-- <draft-ietf-ips-iscsi-mib-05.txt>. In terms of object syntax 
-- and semantics, the content of this Cisco MIB is the same as 
-- the corresponding Internet Draft revision. This Cisco MIB was 
-- created due to the "subject to change" nature of Internet Drafts. 
-- This Cisco MIB may later be deprecated, and the stable RFC, which 
-- may replace the Internet Draft, may be implemented in its place.

CISCO-ISCSI-MIB DEFINITIONS  ::= BEGIN

    IMPORTS
    MODULE-IDENTITY, OBJECT-TYPE, OBJECT-IDENTITY, NOTIFICATION-TYPE,
    Unsigned32, Counter32, Counter64, Gauge32
    FROM SNMPv2-SMI

    TEXTUAL-CONVENTION, TruthValue, RowPointer, TimeStamp, RowStatus,
    AutonomousType
    FROM SNMPv2-TC

    MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP
    FROM SNMPv2-CONF

    SnmpAdminString
    FROM SNMP-FRAMEWORK-MIB -- RFC 2571

    InetAddressType, InetAddress
    FROM INET-ADDRESS-MIB -- RFC 3291
    ciscoExperiment 
    FROM CISCO-SMI
    ;

ciscoIscsiModule MODULE-IDENTITY
    LAST-UPDATED  "200210050000Z" 
    ORGANIZATION  "IETF IPS Working Group"
    CONTACT-INFO
                "     Cisco Systems
                      Customer Service
                Postal: 170 W Tasman Drive
                      San Jose, CA  95134
                      USA
                Tel: +1 800 553 -NETS
                E-mail: cs-san@cisco.com"
    DESCRIPTION
        "The iSCSI Protocol MIB module."

    REVISION "200210050000Z" 
    DESCRIPTION
        "Initial revision published of this MIB module."
    ::= { ciscoExperiment 94 }

cIscsiObjects OBJECT IDENTIFIER ::= { ciscoIscsiModule 1 }
cIscsiNotifications OBJECT IDENTIFIER ::= { ciscoIscsiModule 2 }
cIscsiConformance OBJECT IDENTIFIER ::= { ciscoIscsiModule 3 }

-- Textual Conventions

CIscsiTransportProtocols ::= TEXTUAL-CONVENTION
    DISPLAY-HINT  "d"
    STATUS        current
    DESCRIPTION
        "This data type is used to define the transport
        protocols that will carry iSCSI PDUs."
    REFERENCE
        "RFC791, RFC1700

        The presently known, officially delegated numbers
        can be found at:
        http://www.iana.org/assignments/protocol-numbers"
    SYNTAX        Unsigned32 (0..255)

CIscsiDigestMethod ::= TEXTUAL-CONVENTION
    STATUS        current
    DESCRIPTION
        "This data type represents the methods possible
        for digest negotiation.
        none     - a placeholder for a secondary digest method
                   that means only the primary method can be
                   used.
        other    - a digest method other than those defined below;
        noDigest - does not support digests (will operate without
                   a digest (NOTE: implementations MUST support
                   digests to be compliant with the iSCSI RFC);
        CRC32c   - require a CRC32C digest."
    SYNTAX        INTEGER {
                      none(1),
                      other(2),
                      noDigest(3),
                      crc32c(4)
                  }

cIscsiDescriptors OBJECT IDENTIFIER ::= { cIscsiObjects 1 }

cIscsiHeaderIntegrityTypes OBJECT IDENTIFIER ::= { cIscsiDescriptors 1 }

cIscsiHdrIntegrityNone OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The authoritative identifier when no integrity scheme (for 
        either the header or data) is being used."
    REFERENCE 
        "iSCSI Protocol Specification."
::= { cIscsiHeaderIntegrityTypes 1 }

cIscsiHdrIntegrityCrc32c OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The authoritative identifier when the integrity scheme (for 
        either the header or data) is CRC-32c."
    REFERENCE 
        "iSCSI Protocol Specification."
::= { cIscsiHeaderIntegrityTypes 2 }

cIscsiDataIntegrityTypes OBJECT IDENTIFIER ::= { cIscsiDescriptors 2 }

cIscsiDataIntegrityNone OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The authoritative identifier when no integrity scheme (for 
        either the header or data) is being used."
    REFERENCE 
        "iSCSI Protocol Specification."
::= { cIscsiDataIntegrityTypes 1 }

cIscsiDataIntegrityCrc32c OBJECT-IDENTITY
    STATUS      current
    DESCRIPTION
        "The authoritative identifier when the integrity scheme (for 
        either the header or data) is CRC-32c."
    REFERENCE 
        "iSCSI Protocol Specification."
::= { cIscsiDataIntegrityTypes 2 }


cIscsiInstance OBJECT IDENTIFIER ::= { cIscsiObjects 2 }

-- Instance Attributes Table

cIscsiInstanceAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiInstanceAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of iSCSI instances present on the system."
::= { cIscsiInstance 1 }

cIscsiInstanceAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiInstanceAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable
        to a particular iSCSI instance."
    INDEX { cIscsiInstIndex }
::= { cIscsiInstanceAttributesTable 1 }

CIscsiInstanceAttributesEntry ::= SEQUENCE {
    cIscsiInstIndex                 Unsigned32,
    cIscsiInstDescr                 SnmpAdminString,
    cIscsiInstVersionMin            Unsigned32,
    cIscsiInstVersionMax            Unsigned32,
    cIscsiInstVendorID              SnmpAdminString,
    cIscsiInstVendorVersion         SnmpAdminString,
    cIscsiInstPortalNumber          Unsigned32,
    cIscsiInstNodeNumber            Unsigned32,
    cIscsiInstSessionNumber         Unsigned32,
    cIscsiInstSsnFailures           Counter32,
    cIscsiInstLastSsnFailureType    AutonomousType,
    cIscsiInstLastSsnRmtNodeName    SnmpAdminString
}

cIscsiInstIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary integer used to uniquely identify a particular
        ISCSI instance."
::= { cIscsiInstanceAttributesEntry 1 }

cIscsiInstDescr OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiInstanceAttributesEntry 2 }

cIscsiInstVersionMin OBJECT-TYPE
    SYNTAX        Unsigned32 (0..255)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Minimum version number of the iSCSI specification supported by
        this instance."
::= { cIscsiInstanceAttributesEntry 3 }

cIscsiInstVersionMax OBJECT-TYPE
    SYNTAX        Unsigned32 (0..255)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Maximum version number of the iSCSI specification supported
        by this instance."
::= { cIscsiInstanceAttributesEntry 4 }

cIscsiInstVendorID OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An octet string describing the manufacturer of the 
        implementation of this instance."
::= { cIscsiInstanceAttributesEntry 5 }

cIscsiInstVendorVersion OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiInstanceAttributesEntry 6 }

cIscsiInstPortalNumber OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    UNITS         "transport endpoints"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of rows in the cIscsiPortalAttributesTable
        which are currently associated with this iSCSI instance."
::= { cIscsiInstanceAttributesEntry 7 }

cIscsiInstNodeNumber OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    UNITS         "Internet Network Addresses"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of rows in the cIscsiNodeAttributesTable which are
        currently associated with this iSCSI instance."
::= { cIscsiInstanceAttributesEntry 8 }

cIscsiInstSessionNumber OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    UNITS         "sessions"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of rows in the cIscsiSessionAttributesTable which
        are currently associated with this iSCSI instance."
::= { cIscsiInstanceAttributesEntry 9 }

cIscsiInstSsnFailures  OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "sessions"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object counts the number of times a session belonging to 
        this instance has been failed."
::= { cIscsiInstanceAttributesEntry 10 }

cIscsiInstLastSsnFailureType  OBJECT-TYPE
    SYNTAX        AutonomousType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The counter object in the cIscsiInstSsnErrorStatsTable that was
        incremented when the last session failure occurred.  

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

cIscsiInstLastSsnRmtNodeName  OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An octet string describing the name of the remote node from 
        the failed session."
::= { cIscsiInstanceAttributesEntry 12 }

-- Instance Session Failure Stats Table

cIscsiInstanceSsnErrorStatsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiInstanceSsnErrorStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of error types that will cause a session failure."
::= { cIscsiInstance 2 }

cIscsiInstanceSsnErrorStatsEntry OBJECT-TYPE
    SYNTAX        CIscsiInstanceSsnErrorStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable
        to a particular iSCSI instance."
    AUGMENTS { cIscsiInstanceAttributesEntry }
::= { cIscsiInstanceSsnErrorStatsTable 1 }

CIscsiInstanceSsnErrorStatsEntry ::= SEQUENCE {
    cIscsiInstSsnDigestErrors       Counter32,
    cIscsiInstSsnCxnTimeoutErrors   Counter32,
    cIscsiInstSsnFormatErrors       Counter32
}

cIscsiInstSsnDigestErrors OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "sessions"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of sessions which were failed due to receipt of a PDU
        containing header or data digest errors."
::= { cIscsiInstanceSsnErrorStatsEntry 1 }

cIscsiInstSsnCxnTimeoutErrors OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "sessions"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of sessions which were failed due to a sequence
        exceeding a time limit."
::= { cIscsiInstanceSsnErrorStatsEntry 2 }

cIscsiInstSsnFormatErrors OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "sessions"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of sessions which were failed due to receipt of a PDU
        which contained a format error."
::= { cIscsiInstanceSsnErrorStatsEntry 3 }

--

cIscsiPortal OBJECT IDENTIFIER ::= { cIscsiObjects 3 }

-- Portal Attributes Table

cIscsiPortalAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiPortalAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    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."
::= { cIscsiPortal 1 }

cIscsiPortalAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiPortalAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable
        to a particular portal instance."
    INDEX { cIscsiInstIndex, cIscsiPortalIndex  }
::= { cIscsiPortalAttributesTable 1 }

CIscsiPortalAttributesEntry ::= SEQUENCE {
    cIscsiPortalIndex               Unsigned32,
    cIscsiPortalRowStatus           RowStatus,
    cIscsiPortalRoles               BITS,
    cIscsiPortalAddrType            InetAddressType,
    cIscsiPortalAddr                InetAddress,
    cIscsiPortalProtocol            CIscsiTransportProtocols,
    cIscsiPortalMaxRecvDataSegLength Unsigned32,
    cIscsiPortalPrimaryHdrDigest    CIscsiDigestMethod,
    cIscsiPortalPrimaryDataDigest   CIscsiDigestMethod,
    cIscsiPortalSecondaryHdrDigest  CIscsiDigestMethod,
    cIscsiPortalSecondaryDataDigest CIscsiDigestMethod,
    cIscsiPortalRecvMarker          TruthValue
}

cIscsiPortalIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary integer used to uniquely identify a particular
        transport endpoint within this iSCSI instance."
::= { cIscsiPortalAttributesEntry 1 }

cIscsiPortalRowStatus OBJECT-TYPE
    SYNTAX        RowStatus
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The status of the row."
::= { cIscsiPortalAttributesEntry 2 }

cIscsiPortalRoles OBJECT-TYPE
    SYNTAX        BITS {
                      targetTypePortal(0),
                      initiatorTypePortal(1)
                  }
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "A portal can operate in one or both of two roles: as a target 
        portal and/or an initiator portal.

        When a new cIscsiPortalAttributesEntry is to be created, the 
        agent should use this object as a hint for the creation of a 
        new cIscsiTgtPortalAttributesEntry and/or 
        cIscsiIntrPortalAttributesEntry."
::= { cIscsiPortalAttributesEntry 3 }

cIscsiPortalAddrType OBJECT-TYPE
    SYNTAX        InetAddressType
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The type of Internet Network Address in the cIscsiPortalAddr."
::= { cIscsiPortalAttributesEntry 4 }

cIscsiPortalAddr OBJECT-TYPE
    SYNTAX        InetAddress
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The portal's Internet Network Address."
::= { cIscsiPortalAttributesEntry 5 }

cIscsiPortalProtocol OBJECT-TYPE
    SYNTAX        CIscsiTransportProtocols
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The portal's transport protocol."
    DEFVAL        { 6 } -- TCP
::= { cIscsiPortalAttributesEntry 6 }

cIscsiPortalMaxRecvDataSegLength OBJECT-TYPE
    SYNTAX        Unsigned32 (512..16777215)
    MAX-ACCESS    read-create
    STATUS        current
    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 }
::= { cIscsiPortalAttributesEntry 7 }

cIscsiPortalPrimaryHdrDigest OBJECT-TYPE
    SYNTAX        CIscsiDigestMethod
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The preferred header digest for this portal."
    DEFVAL        { noDigest }
::= { cIscsiPortalAttributesEntry 8 }

cIscsiPortalPrimaryDataDigest OBJECT-TYPE
    SYNTAX        CIscsiDigestMethod
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The preferred data digest method for this portal."
    DEFVAL        { noDigest }
::= { cIscsiPortalAttributesEntry 9 }

cIscsiPortalSecondaryHdrDigest OBJECT-TYPE
    SYNTAX        CIscsiDigestMethod
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "An alternate header digest preference for this portal."
    DEFVAL        { none }
::= { cIscsiPortalAttributesEntry 10 }

cIscsiPortalSecondaryDataDigest OBJECT-TYPE
    SYNTAX        CIscsiDigestMethod
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "An alternate data digest preference for this portal."
    DEFVAL        { none }
::= { cIscsiPortalAttributesEntry 11 }

cIscsiPortalRecvMarker OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "This object indicates whether or not this portal will
        request markers in it's incoming data stream."
::= { cIscsiPortalAttributesEntry 12 }

cIscsiTargetPortal OBJECT IDENTIFIER ::= { cIscsiObjects 4 }

-- Target Portal Attributes Table

cIscsiTgtPortalAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiTgtPortalAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of transport endpoints (using TCP or another transport 
        protocol) on which this iSCSI instance listens for incoming 
        connections to its targets."
::= { cIscsiTargetPortal 1 }

cIscsiTgtPortalAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiTgtPortalAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    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 cIscsiPortalAttributesEntry row that may be used as a 
        target portal."
    INDEX { cIscsiInstIndex, cIscsiPortalIndex  }
::= { cIscsiTgtPortalAttributesTable 1 }

CIscsiTgtPortalAttributesEntry ::= SEQUENCE {
    cIscsiTgtPortalPort             Unsigned32,
    cIscsiTgtPortalTag              Unsigned32
}

cIscsiTgtPortalPort OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-write
    STATUS        current
    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."
::= { cIscsiTgtPortalAttributesEntry 1 }

cIscsiTgtPortalTag OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-write
    STATUS        current
    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."
::= { cIscsiTgtPortalAttributesEntry 2 }


cIscsiInitiatorPortal OBJECT IDENTIFIER ::= { cIscsiObjects 5 }

-- Initiator Portal Attributes Table

cIscsiIntrPortalAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiIntrPortalAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of Internet Network Addresses (using TCP or another 
        transport protocol) from which this iSCSI instance may 
        initiate connections to other targets."
::= { cIscsiInitiatorPortal 1 }

cIscsiIntrPortalAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiIntrPortalAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    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 
        cIscsiPortalAttributesEntry row that may be used as an 
        initiator portal."
    INDEX { cIscsiInstIndex, cIscsiPortalIndex  }
::= { cIscsiIntrPortalAttributesTable 1 }
CIscsiIntrPortalAttributesEntry ::= SEQUENCE {
    cIscsiIntrPortalTag             Unsigned32
}

cIscsiIntrPortalTag OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-write
    STATUS        current
    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."
::= { cIscsiIntrPortalAttributesEntry 1 }


cIscsiNode OBJECT IDENTIFIER ::= { cIscsiObjects 6 }

-- Node Attributes Table

cIscsiNodeAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiNodeAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    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."
::= { cIscsiNode 1 }

cIscsiNodeAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiNodeAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable to 
        a particular iSCSI node."
    INDEX { cIscsiInstIndex, cIscsiNodeIndex }
::= { cIscsiNodeAttributesTable 1 }

CIscsiNodeAttributesEntry ::= SEQUENCE {
    cIscsiNodeIndex                  Unsigned32,
    cIscsiNodeName                   SnmpAdminString,
    cIscsiNodeAlias                  SnmpAdminString,
    cIscsiNodeRoles                  BITS,
    cIscsiNodeTransportType          RowPointer,
    cIscsiNodeInitialR2T             TruthValue,
    cIscsiNodeBidiInitialR2T         TruthValue,
    cIscsiNodeImmediateData          TruthValue,
    cIscsiNodeMaxOutstandingR2T      Unsigned32,
    cIscsiNodeFirstBurstSize         Unsigned32,
    cIscsiNodeMaxBurstSize           Unsigned32,
    cIscsiNodeMaxConnections         Unsigned32,
    cIscsiNodeDataSequenceInOrder    TruthValue,
    cIscsiNodeDataPduInOrder         TruthValue,
    cIscsiNodeDefaultTime2Wait       Unsigned32,
    cIscsiNodeDefaultTime2Retain     Unsigned32,
    cIscsiNodeErrorRecoveryLevel     Unsigned32
}

cIscsiNodeIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary integer used to uniquely identify a particular 
        node within an iSCSI instance present on the local system."
::= { cIscsiNodeAttributesEntry 1 }

cIscsiNodeName OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiNodeAttributesEntry 2 }

cIscsiNodeAlias OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiNodeAttributesEntry 3 }

cIscsiNodeRoles OBJECT-TYPE
    SYNTAX        BITS {
                      targetTypeNode(0),
                      initiatorTypeNode(1)
                  }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A node can operate as in one or both of two roles:
        a target role and/or an initiator role."
::= { cIscsiNodeAttributesEntry 4 }

cIscsiNodeTransportType OBJECT-TYPE
    SYNTAX        RowPointer
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "A pointer to the corresponding scsiTrnspt object in the 
        CISCO-SCSI-MIB (which in turn points to this iSCSI node)
        allowing management stations to locate the SCSI-level Device 
        that is represented by this cIscsiNode."
    REFERENCE
        "CISCO-SCSI-MIB"
::= { cIscsiNodeAttributesEntry 5 }

cIscsiNodeInitialR2T OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object indicates InitialR2T preference for this node -
        True = YES,
        False = will try to negotiate NO, will accept YES "
    DEFVAL        { true }
::= { cIscsiNodeAttributesEntry 6 }

cIscsiNodeBidiInitialR2T OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object indicates BidiInitialR2T preference for this node-
          True = YES,
          False = will try to negotiate NO, will accept YES "
    DEFVAL        { true }
::= { cIscsiNodeAttributesEntry 7 }

cIscsiNodeImmediateData OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "This object indicates ImmediateData preference for this node
        True = YES (but will accept NO),
        False = NO "
    DEFVAL        { true }
::= { cIscsiNodeAttributesEntry 8 }

cIscsiNodeMaxOutstandingR2T OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "Maximum number of outstanding R2Ts allowed per task."
    DEFVAL        { 1 }
::= { cIscsiNodeAttributesEntry 9 }

cIscsiNodeFirstBurstSize OBJECT-TYPE
    SYNTAX        Unsigned32 (512..16777215)
    UNITS         "bytes"
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The maximum length (bytes) supported for unsolicited data
        to/from this node."
    DEFVAL        { 65536 }
::= { cIscsiNodeAttributesEntry 10 }

cIscsiNodeMaxBurstSize OBJECT-TYPE
    SYNTAX        Unsigned32 (512..16777215)
    UNITS         "bytes"
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The maximum number of bytes which can be sent within a single
        sequence of Data-In or Data-Out PDUs."
    DEFVAL        { 262144 }
::= { cIscsiNodeAttributesEntry 11 }

cIscsiNodeMaxConnections OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    UNITS         "connections"
    MAX-ACCESS    read-write
    STATUS        current
    DESCRIPTION
        "The maximum number of connections allowed in each
        session to and/or from this node."
    DEFVAL        { 1 }
::= { cIscsiNodeAttributesEntry 12 }

cIscsiNodeDataSequenceInOrder OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    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 }
::= { cIscsiNodeAttributesEntry 13 }

cIscsiNodeDataPduInOrder OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-write
    STATUS        current
    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 }
::= { cIscsiNodeAttributesEntry 14 }

cIscsiNodeDefaultTime2Wait OBJECT-TYPE
    SYNTAX        Unsigned32 (0..3600)
    MAX-ACCESS    read-write
    STATUS        current
    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 }
::= { cIscsiNodeAttributesEntry 15 }

cIscsiNodeDefaultTime2Retain OBJECT-TYPE
    SYNTAX        Unsigned32 (0..3600)
    MAX-ACCESS    read-write
    STATUS        current
    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 }
::= { cIscsiNodeAttributesEntry 16 }

cIscsiNodeErrorRecoveryLevel OBJECT-TYPE
    SYNTAX        Unsigned32 (0..255)
    MAX-ACCESS    read-write
    STATUS        current
    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 otherwords,
        error level 2 implies support for levels 0-1, since those
        functions are subsets of error level 2."
    DEFVAL        { 0 }
::= { cIscsiNodeAttributesEntry 17 }


cIscsiTarget OBJECT IDENTIFIER ::= { cIscsiObjects 7 }

-- Target Attributes Table

cIscsiTargetAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiTargetAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable to
        a particular node that can take on a target role."
::= { cIscsiTarget 1 }

cIscsiTargetAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiTargetAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable
        to a particular target."
    INDEX { cIscsiInstIndex, cIscsiNodeIndex }
::= { cIscsiTargetAttributesTable 1 }

CIscsiTargetAttributesEntry ::= SEQUENCE {
    cIscsiTgtLoginFailures          Counter32,
    cIscsiTgtLastFailureTime        TimeStamp,
    cIscsiTgtLastFailureType        AutonomousType,
    cIscsiTgtLastIntrFailureName    SnmpAdminString,
    cIscsiTgtLastIntrFailureAddrType InetAddressType,
    cIscsiTgtLastIntrFailureAddr    InetAddress
}

cIscsiTgtLoginFailures OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed login attempts"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object counts the number of times a login attempt to this
        local target has failed."
::= { cIscsiTargetAttributesEntry 1 }

cIscsiTgtLastFailureTime OBJECT-TYPE
    SYNTAX        TimeStamp
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiTargetAttributesEntry 2 }

cIscsiTgtLastFailureType  OBJECT-TYPE
    SYNTAX        AutonomousType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The type of the most recent failure of a login attempt to this
        target, represented as the OID of the counter object in 
        cIscsiTargetLoginStatsTable 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 
        cIscsiTargetLoginStatsTable."
::= { cIscsiTargetAttributesEntry 3 }

cIscsiTgtLastIntrFailureName  OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An octet string giving the name of the initiator
        that failed the last login attempt."
::= { cIscsiTargetAttributesEntry 4 }

cIscsiTgtLastIntrFailureAddrType OBJECT-TYPE
    SYNTAX        InetAddressType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The type of Internet Network Address in
        cIscsiTgtLastIntrFailureAddr."
::= { cIscsiTargetAttributesEntry 5 }

cIscsiTgtLastIntrFailureAddr OBJECT-TYPE
    SYNTAX        InetAddress
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An Internet Network Address giving the host address
        of the initiator that failed the last login attempt."
::= { cIscsiTargetAttributesEntry 6 }

-- Target Login Stats Table

cIscsiTargetLoginStatsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiTargetLoginStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A table of counters which keep a record of the results
        of initiators' login attempts to this target."
::= { cIscsiTarget 2 }

cIscsiTargetLoginStatsEntry OBJECT-TYPE
    SYNTAX        CIscsiTargetLoginStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing counters for each result of
        a login attempt to this target."
    AUGMENTS { cIscsiTargetAttributesEntry }
::= { cIscsiTargetLoginStatsTable 1 }

CIscsiTargetLoginStatsEntry ::= SEQUENCE {
    cIscsiTgtLoginAccepts           Counter32,
    cIscsiTgtLoginOtherFails        Counter32,
    cIscsiTgtLoginRedirects         Counter32,
    cIscsiTgtLoginAuthorizeFails    Counter32,
    cIscsiTgtLoginAuthenticateFails Counter32,
    cIscsiTgtLoginNegotiateFails    Counter32
}

cIscsiTgtLoginAccepts OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "successful logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Login Response PDUs with status
        0x0000, Accept Login, transmitted by this
        target."
::= { cIscsiTargetLoginStatsEntry 1 }

cIscsiTgtLoginOtherFails OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiTargetLoginStatsEntry 2 }

cIscsiTgtLoginRedirects OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Login Response PDUs with status class 0x01,
        Redirection, transmitted by this target."
::= { cIscsiTargetLoginStatsEntry 3 }

cIscsiTgtLoginAuthorizeFails OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Login Response PDUs with status 0x0202,
        Forbidden Target, transmitted by this target.

        If this counter is incremented, an cIscsiTgtLoginFailure
        notification should be generated."
::= { cIscsiTargetLoginStatsEntry 4 }

cIscsiTgtLoginAuthenticateFails OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Login Response PDUs with status 0x0201,
        Authentication Failed, transmitted by this target

        If this counter is incremented, an cIscsiTgtLoginFailure
        notification should be generated."
::= { cIscsiTargetLoginStatsEntry 5 }

cIscsiTgtLoginNegotiateFails OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    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 cIscsiTgtLoginFailure
        notification should be generated."
::= { cIscsiTargetLoginStatsEntry 6 }

-- Target Logout Stats Table

cIscsiTargetLogoutStatsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiTargetLogoutStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    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."
::= { cIscsiTarget 3 }

cIscsiTargetLogoutStatsEntry OBJECT-TYPE
    SYNTAX        CIscsiTargetLogoutStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing counters of Logout Response
        PDUs that were received by this target."
    AUGMENTS { cIscsiTargetAttributesEntry }
::= { cIscsiTargetLogoutStatsTable 1 }

CIscsiTargetLogoutStatsEntry ::= SEQUENCE {
    cIscsiTgtLogoutNormals          Counter32,
    cIscsiTgtLogoutOthers           Counter32
}

cIscsiTgtLogoutNormals OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "normal logouts"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Logout Command PDUs received by this target,
        with reason code 0 (closes the session)."
::= { cIscsiTargetLogoutStatsEntry 1 }

cIscsiTgtLogoutOthers OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "abnormal logouts"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Logout Command PDUs received by this target,
        with any status code other than 0."
::= { cIscsiTargetLogoutStatsEntry 2 }


cIscsiTgtAuthorization OBJECT IDENTIFIER ::= { cIscsiObjects 8 }

-- Target Authorization Attributes Table

cIscsiTgtAuthAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiTgtAuthAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of initiator identities that are authorized to
        access each target node within each iSCSI instance
        present on the local system."
::= { cIscsiTgtAuthorization 1 }

cIscsiTgtAuthAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiTgtAuthAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information
        applicable to a particular target node's authorized
        initiator identity."
    INDEX { cIscsiInstIndex, cIscsiNodeIndex, cIscsiTgtAuthIndex }
::= { cIscsiTgtAuthAttributesTable 1 }

CIscsiTgtAuthAttributesEntry ::= SEQUENCE {
    cIscsiTgtAuthIndex              Unsigned32,
    cIscsiTgtAuthRowStatus          RowStatus,
    cIscsiTgtAuthIdentity           RowPointer
}

cIscsiTgtAuthIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary integer used to uniquely identify a particular
        target's authorized initiator identity within an iSCSI
        instance present on the local system."
::= { cIscsiTgtAuthAttributesEntry 1 }

cIscsiTgtAuthRowStatus OBJECT-TYPE
    SYNTAX        RowStatus
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "The status of the row."
::= { cIscsiTgtAuthAttributesEntry 2 }

cIscsiTgtAuthIdentity OBJECT-TYPE
    SYNTAX        RowPointer
    MAX-ACCESS    read-create
    STATUS        current
    DESCRIPTION
        "A pointer to the corresponding IPS-AUTH MIB user entry
        that will be allowed to access this iSCSI target."
    REFERENCE
        "IPS-AUTH MIB"
::= { cIscsiTgtAuthAttributesEntry 3 }

cIscsiInitiator OBJECT IDENTIFIER ::= { cIscsiObjects 9 }

-- Initiator Attributes Table

cIscsiInitiatorAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiInitiatorAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of iSCSI nodes that can take on an initiator
        role, belonging to each iSCSI instance present on
        the local system."
::= { cIscsiInitiator 1 }

cIscsiInitiatorAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiInitiatorAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information
        applicable to a particular iSCSI node that has
        initiator capabilities."
    INDEX  { cIscsiInstIndex, cIscsiNodeIndex }
::= { cIscsiInitiatorAttributesTable 1 }

CIscsiInitiatorAttributesEntry ::= SEQUENCE {
    cIscsiIntrLoginFailures         Counter32,
    cIscsiIntrLastFailureTime       TimeStamp,
    cIscsiIntrLastFailureType       AutonomousType,
    cIscsiIntrLastTgtFailureName    SnmpAdminString,
    cIscsiIntrLastTgtFailureAddrType InetAddressType,
    cIscsiIntrLastTgtFailureAddr    InetAddress
}

cIscsiIntrLoginFailures OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object counts the number of times a login attempt from 
        this local initiator has failed."
::= { cIscsiInitiatorAttributesEntry 1 }

cIscsiIntrLastFailureTime OBJECT-TYPE
    SYNTAX        TimeStamp
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiInitiatorAttributesEntry 2 }

cIscsiIntrLastFailureType  OBJECT-TYPE
    SYNTAX        AutonomousType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The type of the most recent failure of a login attempt
        from this initiator, represented as the OID of the counter
        object in cIscsiInitiatorLoginStatsTable 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 cIscsiInitiatorLoginStatsTable."
::= { cIscsiInitiatorAttributesEntry 3 }

cIscsiIntrLastTgtFailureName  OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An octet string giving the name of the target that failed
        the last login attempt."
::= { cIscsiInitiatorAttributesEntry 4 }

cIscsiIntrLastTgtFailureAddrType OBJECT-TYPE
    SYNTAX        InetAddressType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The type of Internet Network Address in 
        cIscsiIntrLastTgtFailureAddr."
::= { cIscsiInitiatorAttributesEntry 5 }

cIscsiIntrLastTgtFailureAddr OBJECT-TYPE
    SYNTAX        InetAddress
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "An Internet Network Address giving the host address of the 
        target that failed the last login attempt."
::= { cIscsiInitiatorAttributesEntry 6 }

-- Initiator Login Stats Table

cIscsiInitiatorLoginStatsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiInitiatorLoginStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A table of counters which keep track of the results of
        this initiator's login attempts."
::= { cIscsiInitiator 2 }

cIscsiInitiatorLoginStatsEntry OBJECT-TYPE
    SYNTAX        CIscsiInitiatorLoginStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing counters of each result
        of this initiator's login attempts."
    AUGMENTS { cIscsiInitiatorAttributesEntry }
::= { cIscsiInitiatorLoginStatsTable 1 }

CIscsiInitiatorLoginStatsEntry ::= SEQUENCE {
    cIscsiIntrLoginAcceptRsps       Counter32,
    cIscsiIntrLoginOtherFailRsps    Counter32,
    cIscsiIntrLoginRedirectRsps     Counter32,
    cIscsiIntrLoginAuthFailRsps     Counter32,
    cIscsiIntrLoginAuthenticateFails Counter32,
    cIscsiIntrLoginNegotiateFails   Counter32
}

cIscsiIntrLoginAcceptRsps OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "successful logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Login Response PDUs with status
        0x0000, Accept Login, received by this initiator."
::= { cIscsiInitiatorLoginStatsEntry 1 }

cIscsiIntrLoginOtherFailRsps OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Login Response PDUs received by this
        initiator with any status code not counted in the
        objects below."
::= { cIscsiInitiatorLoginStatsEntry 2 }

cIscsiIntrLoginRedirectRsps OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Login Response PDUs with status class 0x01,
        Redirection, received by this initiator."
::= { cIscsiInitiatorLoginStatsEntry 3 }

cIscsiIntrLoginAuthFailRsps OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Login Response PDUs with status class 0x201,
        Authentication Failed, received by this initiator."
::= { cIscsiInitiatorLoginStatsEntry 4 }

cIscsiIntrLoginAuthenticateFails OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    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 cIscsiIntrLoginFailure
        notification should be generated."
::= { cIscsiInitiatorLoginStatsEntry 5 }

cIscsiIntrLoginNegotiateFails OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "failed logins"
    MAX-ACCESS    read-only
    STATUS        current
    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 cIscsiIntrLoginFailure
        notification should be generated."
::= { cIscsiInitiatorLoginStatsEntry 6 }

-- Initiator Logout Stats Table

cIscsiInitiatorLogoutStatsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiInitiatorLogoutStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    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."
::= { cIscsiInitiator 3 }

cIscsiInitiatorLogoutStatsEntry OBJECT-TYPE
    SYNTAX        CIscsiInitiatorLogoutStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing counters of Logout Response
        PDUs of each status code, that were generated by this
        initiator."
    AUGMENTS { cIscsiInitiatorAttributesEntry }
::= { cIscsiInitiatorLogoutStatsTable 1 }

CIscsiInitiatorLogoutStatsEntry ::= SEQUENCE {
    cIscsiIntrLogoutNormals         Counter32,
    cIscsiIntrLogoutOthers          Counter32
}

cIscsiIntrLogoutNormals OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "normal logouts"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Logout Command PDUs generated by this initiator
        with reason code 0 (closes the session)."
::= { cIscsiInitiatorLogoutStatsEntry 1 }

cIscsiIntrLogoutOthers OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "abnormal logouts"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Logout Command PDUs generated by this initiator
        with any status code other than 0."
::= { cIscsiInitiatorLogoutStatsEntry 2 }


cIscsiIntrAuthorization OBJECT IDENTIFIER ::= { cIscsiObjects 10 }

-- Initiator Authorization Attributes Table

cIscsiIntrAuthAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiIntrAuthAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of target identities which each initiator
        on the local system may access."
::= { cIscsiIntrAuthorization 1 }

cIscsiIntrAuthAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiIntrAuthAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable
        to a particular initiator node's authorized target identity."
    INDEX { cIscsiInstIndex, cIscsiNodeIndex, cIscsiIntrAuthIndex }
::= { cIscsiIntrAuthAttributesTable 1 }

CIscsiIntrAuthAttributesEntry ::= SEQUENCE {
    cIscsiIntrAuthIndex              Unsigned32,
    cIscsiIntrAuthRowStatus          RowStatus,
    cIscsiIntrAuthIdentity           RowPointer
}

cIscsiIntrAuthIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    MAX-ACCESS    not-accessible
    STATUS        current
    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."
::= { cIscsiIntrAuthAttributesEntry 1 }

cIscsiIntrAuthRowStatus OBJECT-TYPE
    SYNTAX        RowStatus
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The status of the row."
::= { cIscsiIntrAuthAttributesEntry 2 }

cIscsiIntrAuthIdentity OBJECT-TYPE
    SYNTAX        RowPointer
    MAX-ACCESS    read-only
    STATUS        current
    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"
::= { cIscsiIntrAuthAttributesEntry 3 }


cIscsiSession OBJECT IDENTIFIER ::= { cIscsiObjects 11 }

-- Session Attributes Table

cIscsiSessionAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiSessionAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of sessions belonging to each iSCSI instance
        present on the system."
::= { cIscsiSession 1 }

cIscsiSessionAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiSessionAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable
        to a particular session."
    INDEX  { cIscsiInstIndex, cIscsiNodeIndex, cIscsiSsnIndex }
::= { cIscsiSessionAttributesTable 1 }

CIscsiSessionAttributesEntry ::= SEQUENCE {
    cIscsiSsnIndex                  Unsigned32,
    cIscsiSsnDirection              INTEGER,
    cIscsiSsnInitiatorName          SnmpAdminString,
    cIscsiSsnTargetName             SnmpAdminString,
    cIscsiSsnTsih                   Unsigned32,
    cIscsiSsnIsid                   OCTET STRING,
    cIscsiSsnInitiatorAlias         SnmpAdminString,
    cIscsiSsnTargetAlias            SnmpAdminString,
    cIscsiSsnInitialR2T             TruthValue,
    cIscsiSsnBidiInitialR2T         TruthValue,
    cIscsiSsnImmediateData          TruthValue,
    cIscsiSsnType                   INTEGER,
    cIscsiSsnMaxOutstandingR2T      Unsigned32,
    cIscsiSsnFirstBurstSize         Unsigned32,
    cIscsiSsnMaxBurstSize           Unsigned32,
    cIscsiSsnConnectionNumber       Gauge32,
    cIscsiSsnAuthIdentity           RowPointer,
    cIscsiSsnDataSequenceInOrder    TruthValue,
    cIscsiSsnDataPduInOrder         TruthValue,
    cIscsiSsnErrorRecoveryLevel     Unsigned32
}

cIscsiSsnIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary integer used to uniquely identify a
        particular session within an iSCSI instance present
        on the local system."
::= { cIscsiSessionAttributesEntry 1 }

cIscsiSsnDirection OBJECT-TYPE
    SYNTAX        INTEGER {
                      inboundSession(1),
                      outboundSession(2)
                  }
    MAX-ACCESS    read-only
    STATUS                         current
    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."
::= { cIscsiSessionAttributesEntry 2 }

cIscsiSsnInitiatorName OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "If cIscsiSsnDirection is Inbound, this object is an
        octet string that will contain the name of the remote
        initiator.

        If cIscsiSsnDirection is Outbound, this object will
        contain a zero-length string."
::= { cIscsiSessionAttributesEntry 3 }

cIscsiSsnTargetName OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "If cIscsiSsnDirection is Outbound, this object is an
        octet string that will contain the name of the remote
        target.

        If cIscsiSsnDirection is Inbound, this object will
        contain a zero-length string."
::= { cIscsiSessionAttributesEntry 4 }

cIscsiSsnTsih OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The target-defined identification handle for this session."
::= { cIscsiSessionAttributesEntry 5 }

cIscsiSsnIsid OBJECT-TYPE
    SYNTAX        OCTET STRING (SIZE(6))
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The initiator-defined portion of the iSCSI Session ID."
::= { cIscsiSessionAttributesEntry 6 }

cIscsiSsnInitiatorAlias OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiSessionAttributesEntry 7 }

cIscsiSsnTargetAlias OBJECT-TYPE
    SYNTAX        SnmpAdminString
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiSessionAttributesEntry 8 }

cIscsiSsnInitialR2T OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    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 cIscsiSsnFirstBurstSize and the expected data transfer
        length of the request.

        Default is true."
::= { cIscsiSessionAttributesEntry 9 }

cIscsiSsnBidiInitialR2T OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "If set to true, indicates that the initiator must wait
        for an R2T before sending data to the target within a
        bi-directional (both read and write) request.  If false,
        the initiator may send unsolicited write data as part
        of the request."
::= { cIscsiSessionAttributesEntry 10 }

cIscsiSsnImmediateData OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Indicates whether the initiator and target have agreed to 
        support immediate data on this session."
::= { cIscsiSessionAttributesEntry 11 }
cIscsiSsnType OBJECT-TYPE
    SYNTAX        INTEGER {
                      normalSession(1),
                      discoverySession(2)
                  }
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "Type of iSCSI session:
        normalSession    - session is a normal iSCSI session
        discoverySession - session is being used only for discovery."
    DEFVAL        { normalSession }
::= { cIscsiSessionAttributesEntry 12 }

cIscsiSsnMaxOutstandingR2T OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The maximum number of outstanding request-to-transmit
        (R2T)s per task within this session."
::= { cIscsiSessionAttributesEntry 13 }

cIscsiSsnFirstBurstSize OBJECT-TYPE
    SYNTAX        Unsigned32 (512..16777215)
    UNITS         "bytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The maximum length supported for unsolicited data sent
        within this session."
    DEFVAL        { 65536 }
::= { cIscsiSessionAttributesEntry 14 }

cIscsiSsnMaxBurstSize OBJECT-TYPE
    SYNTAX        Unsigned32 (512..16777215)
    UNITS         "bytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
     "The maximum number of bytes which can be sent within
     a single sequence of Data-In or Data-Out PDUs."
    DEFVAL        { 262144 }
::= { cIscsiSessionAttributesEntry 15 }

cIscsiSsnConnectionNumber OBJECT-TYPE
    SYNTAX        Gauge32 (1..65535)
    UNITS         "connections"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The number of transport protocol connections that currently
        belong to this session."
::= { cIscsiSessionAttributesEntry 16 }

cIscsiSsnAuthIdentity OBJECT-TYPE
    SYNTAX        RowPointer
    MAX-ACCESS    read-only
    STATUS        current
    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"
::= { cIscsiSessionAttributesEntry 17 }

 cIscsiSsnDataSequenceInOrder OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiSessionAttributesEntry 18 }

cIscsiSsnDataPduInOrder OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiSessionAttributesEntry 19 }

cIscsiSsnErrorRecoveryLevel OBJECT-TYPE
    SYNTAX        Unsigned32 (0..255)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The level of error recovery negotiated between
        the initiator and the target.  Higher numbers
        represent more detailed recovery schemes."
::= { cIscsiSessionAttributesEntry 20 }

-- Session Stats Table

cIscsiSessionStatsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiSessionStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of general iSCSI traffic counters for each of the
        sessions present on the system."
::= { cIscsiSession 2 }

cIscsiSessionStatsEntry OBJECT-TYPE
    SYNTAX        CIscsiSessionStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing general iSCSI traffic counters
        for a particular session."
    AUGMENTS { cIscsiSessionAttributesEntry }
::= { cIscsiSessionStatsTable 1 }

CIscsiSessionStatsEntry ::= SEQUENCE {
    cIscsiSsnCmdPdus                Counter32,
    cIscsiSsnRspPdus                Counter32,
    cIscsiSsnTxDataOctets           Counter64,
    cIscsiSsnRxDataOctets           Counter64
}

cIscsiSsnCmdPdus OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "PDUs"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Command PDUs transferred on this session."
::= { cIscsiSessionStatsEntry 1 }

cIscsiSsnRspPdus OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "PDUs"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of Response PDUs transferred on this session."
::= { cIscsiSessionStatsEntry 2 }

cIscsiSsnTxDataOctets OBJECT-TYPE
    SYNTAX        Counter64
    UNITS         "octets"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of data octets that were transmitted by
        the local iSCSI node on this session."
::= { cIscsiSessionStatsEntry 3 }

cIscsiSsnRxDataOctets OBJECT-TYPE
    SYNTAX        Counter64
    UNITS         "octets"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of data octets that were received by
        the local iSCSI node on this session."
::= { cIscsiSessionStatsEntry 4 }

-- Session Connection Error Stats Table

cIscsiSessionCxnErrorStatsTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiSessionCxnErrorStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of error counters for each of the sessions
        present on this system."
::= { cIscsiSession 3 }

cIscsiSessionCxnErrorStatsEntry OBJECT-TYPE
    SYNTAX        CIscsiSessionCxnErrorStatsEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing error counters for
        a particular session."
    AUGMENTS { cIscsiSessionAttributesEntry }
::= { cIscsiSessionCxnErrorStatsTable 1 }

CIscsiSessionCxnErrorStatsEntry ::= SEQUENCE {
    cIscsiSsnDigestErrors           Counter32,
    cIscsiSsnCxnTimeoutErrors       Counter32
}

cIscsiSsnDigestErrors OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "PDUs"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of PDUs which were received on the session and
        contained header or data digest errors."
::= { cIscsiSessionCxnErrorStatsEntry 1 }

cIscsiSsnCxnTimeoutErrors OBJECT-TYPE
    SYNTAX        Counter32
    UNITS         "sequences"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The count of connections within this session
        which have been terminated due to timeout."
::= { cIscsiSessionCxnErrorStatsEntry 2 }


cIscsiConnection OBJECT IDENTIFIER ::= { cIscsiObjects 12 }

-- Connection Attributes Table

cIscsiConnectionAttributesTable OBJECT-TYPE
    SYNTAX        SEQUENCE OF CIscsiConnectionAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "A list of connections belonging to each iSCSI instance
        present on the system."
::= { cIscsiConnection 1 }

cIscsiConnectionAttributesEntry OBJECT-TYPE
    SYNTAX        CIscsiConnectionAttributesEntry
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An entry (row) containing management information applicable
        to a particular connection."
    INDEX  { cIscsiInstIndex, cIscsiNodeIndex, cIscsiSsnIndex, 
             cIscsiCxnIndex }
::= { cIscsiConnectionAttributesTable 1 }

CIscsiConnectionAttributesEntry ::= SEQUENCE {
    cIscsiCxnIndex                  Unsigned32,
    cIscsiCxnCid                    Unsigned32,
    cIscsiCxnState                  INTEGER,
    cIscsiCxnLocalAddrType          InetAddressType,
    cIscsiCxnLocalAddr              InetAddress,
    cIscsiCxnProtocol               CIscsiTransportProtocols,
    cIscsiCxnLocalPort              Unsigned32,
    cIscsiCxnRemoteAddrType         InetAddressType,
    cIscsiCxnRemoteAddr             InetAddress,
    cIscsiCxnRemotePort             Unsigned32,
    cIscsiCxnMaxRecvDataSegLength   Unsigned32,
    cIscsiCxnHeaderIntegrity        CIscsiDigestMethod,
    cIscsiCxnDataIntegrity          CIscsiDigestMethod,
    cIscsiCxnRecvMarker             TruthValue,
    cIscsiCxnSendMarker             TruthValue
}

cIscsiCxnIndex OBJECT-TYPE
    SYNTAX        Unsigned32 (1..4294967295)
    MAX-ACCESS    not-accessible
    STATUS        current
    DESCRIPTION
        "An arbitrary integer used to uniquely identify a
        particular connection of a particular session within
        an iSCSI instance present on the local system."
::= { cIscsiConnectionAttributesEntry 1 }

cIscsiCxnCid OBJECT-TYPE
    SYNTAX        Unsigned32 (1..65535)
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The iSCSI Connection ID for this connection."
::= { cIscsiConnectionAttributesEntry 2 }

cIscsiCxnState OBJECT-TYPE
    SYNTAX        INTEGER {
                      login(1),
                      full(2),
                      logout(3)
                  }
    MAX-ACCESS    read-only
    STATUS        current
    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."
::= { cIscsiConnectionAttributesEntry 3 }

cIscsiCxnLocalAddrType OBJECT-TYPE
    SYNTAX        InetAddressType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The type of Internet Network Address in cIscsiCxnLocalAddr."
::= { cIscsiConnectionAttributesEntry 4 }

cIscsiCxnLocalAddr OBJECT-TYPE
    SYNTAX        InetAddress
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The local Internet Network Address used by this connection."
::= { cIscsiConnectionAttributesEntry 5 }

cIscsiCxnProtocol OBJECT-TYPE
    SYNTAX        CIscsiTransportProtocols
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The transport protocol over which this connection is
        running."
    DEFVAL                         { 6 } -- TCP
::= { cIscsiConnectionAttributesEntry 6 }

cIscsiCxnLocalPort OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The local transport protocol port used by this connection."
::= { cIscsiConnectionAttributesEntry 7 }

cIscsiCxnRemoteAddrType OBJECT-TYPE
    SYNTAX        InetAddressType
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The type of Internet Network Address in cIscsiCxnRemoteAddr."
::= { cIscsiConnectionAttributesEntry 8 }

cIscsiCxnRemoteAddr OBJECT-TYPE
    SYNTAX        InetAddress
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The remote Internet Network Address used by this connection."
::= { cIscsiConnectionAttributesEntry 9 }

cIscsiCxnRemotePort OBJECT-TYPE
    SYNTAX        Unsigned32
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The remote transport protocol port used by this connection."
::= { cIscsiConnectionAttributesEntry 10 }

cIscsiCxnMaxRecvDataSegLength OBJECT-TYPE
    SYNTAX        Unsigned32 (512..16777215)
    UNITS         "bytes"
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "The maximum data payload size supported for command
        or data PDUs in use within this connection.

        Note that the size of reported in bytes even though
        the negotiation is in 512k blocks."
    DEFVAL { 8192 }
::= { cIscsiConnectionAttributesEntry 11 }

cIscsiCxnHeaderIntegrity OBJECT-TYPE
    SYNTAX        CIscsiDigestMethod
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object identifies the iSCSI header
        digest scheme in use within this connection."
::= { cIscsiConnectionAttributesEntry 12 }

cIscsiCxnDataIntegrity OBJECT-TYPE
    SYNTAX        CIscsiDigestMethod
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object identifies the iSCSI data
        digest scheme in use within this connection."
::= { cIscsiConnectionAttributesEntry 13 }

cIscsiCxnRecvMarker OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object indicates whether or not this connection
        is receiving markers in in its incoming data stream."
::= { cIscsiConnectionAttributesEntry 14 }

cIscsiCxnSendMarker OBJECT-TYPE
    SYNTAX        TruthValue
    MAX-ACCESS    read-only
    STATUS        current
    DESCRIPTION
        "This object indicates whether or not this connection
        is inserting markers in in its outgoing data stream."
::= { cIscsiConnectionAttributesEntry 15 }

-- Notifications

cIscsiNotificationsPrefix OBJECT IDENTIFIER 
                                   ::= { cIscsiNotifications 0 }

cIscsiTgtLoginFailure NOTIFICATION-TYPE
    OBJECTS {
        cIscsiTgtLoginFailures,
        cIscsiTgtLastFailureType,
        cIscsiTgtLastIntrFailureName,
        cIscsiTgtLastIntrFailureAddrType,
        cIscsiTgtLastIntrFailureAddr
    }
    STATUS current
    DESCRIPTION
        "Sent when a login is failed by a target.

        The implementation of this trap should not send more than
        3 notifications of this type in any 10 second time span."
::= { cIscsiNotificationsPrefix 1 }

cIscsiIntrLoginFailure NOTIFICATION-TYPE
    OBJECTS {
        cIscsiIntrLoginFailures,
        cIscsiIntrLastFailureType,
        cIscsiIntrLastTgtFailureName,
        cIscsiIntrLastTgtFailureAddrType,
        cIscsiIntrLastTgtFailureAddr
    }
    STATUS current
    DESCRIPTION
        "Sent when a login is failed by a initiator.

        The implementation of this trap should not send more than
        3 notifications of this type in any 10 second time span."
::= { cIscsiNotificationsPrefix 2 }

cIscsiInstSessionFailure NOTIFICATION-TYPE
    OBJECTS {
        cIscsiInstSsnFailures,
        cIscsiInstLastSsnFailureType,
        cIscsiInstLastSsnRmtNodeName
    }
    STATUS current
    DESCRIPTION
        "Sent when an active session is failed by either the initiator
        or the target.

        The implementation of this trap should not send more than
        3 notifications of this type in any 10 second time span."
::= { cIscsiNotificationsPrefix 3 }


-- Conformance Statements

cIscsiGroups OBJECT IDENTIFIER ::= { cIscsiConformance 1 }

cIscsiInstanceAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiInstDescr,
        cIscsiInstVersionMin,
        cIscsiInstVersionMax,
        cIscsiInstVendorID,
        cIscsiInstVendorVersion,
        cIscsiInstPortalNumber,
        cIscsiInstNodeNumber,
        cIscsiInstSessionNumber,
        cIscsiInstSsnFailures,
        cIscsiInstLastSsnFailureType,
        cIscsiInstLastSsnRmtNodeName
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about iSCSI
        instances."
::= { cIscsiGroups 1 }

cIscsiInstanceSsnErrorStatsGroup OBJECT-GROUP
    OBJECTS {
        cIscsiInstSsnDigestErrors,
        cIscsiInstSsnCxnTimeoutErrors,
        cIscsiInstSsnFormatErrors
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about
        errors that have caused a session failure for an
        iSCSI instance."
::= { cIscsiGroups 2 }

cIscsiPortalAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiPortalRowStatus,
        cIscsiPortalRoles,
        cIscsiPortalAddrType,
        cIscsiPortalAddr,
        cIscsiPortalProtocol,
        cIscsiPortalMaxRecvDataSegLength,
        cIscsiPortalPrimaryHdrDigest,
        cIscsiPortalPrimaryDataDigest,
        cIscsiPortalSecondaryHdrDigest,
        cIscsiPortalSecondaryDataDigest,
     cIscsiPortalRecvMarker
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about
        the transport protocol endpoints of the local targets."
::= { cIscsiGroups 3 }

cIscsiTgtPortalAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiTgtPortalPort,
        cIscsiTgtPortalTag
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about
        the transport protocol endpoints of the local targets."
::= { cIscsiGroups 4 }

cIscsiIntrPortalAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiIntrPortalTag
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about
        the Internet Network Addresses of the local initiators."
::= { cIscsiGroups 5 }

cIscsiNodeAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiNodeName,
        cIscsiNodeAlias,
        cIscsiNodeRoles,
        cIscsiNodeTransportType,
        cIscsiNodeInitialR2T,
        cIscsiNodeBidiInitialR2T,
        cIscsiNodeImmediateData,
        cIscsiNodeMaxOutstandingR2T,
        cIscsiNodeFirstBurstSize,
        cIscsiNodeMaxBurstSize,
        cIscsiNodeMaxConnections,
        cIscsiNodeDataSequenceInOrder,
        cIscsiNodeDataPduInOrder,
        cIscsiNodeDefaultTime2Wait,
        cIscsiNodeDefaultTime2Retain,
        cIscsiNodeErrorRecoveryLevel
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about all
        local targets."
::= { cIscsiGroups 6 }

cIscsiTargetAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiTgtLoginFailures,
        cIscsiTgtLastFailureTime,
        cIscsiTgtLastFailureType,
        cIscsiTgtLastIntrFailureName,
        cIscsiTgtLastIntrFailureAddrType,
        cIscsiTgtLastIntrFailureAddr
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about all
        local targets."
::= { cIscsiGroups 7 }

cIscsiTargetLoginStatsGroup OBJECT-GROUP
    OBJECTS {
        cIscsiTgtLoginAccepts,
        cIscsiTgtLoginOtherFails,
        cIscsiTgtLoginRedirects,
        cIscsiTgtLoginAuthorizeFails,
        cIscsiTgtLoginAuthenticateFails,
        cIscsiTgtLoginNegotiateFails
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about all
        login attempts by remote initiators to local targets."
::= { cIscsiGroups 8 }

cIscsiTargetLogoutStatsGroup OBJECT-GROUP
    OBJECTS {
        cIscsiTgtLogoutNormals,
        cIscsiTgtLogoutOthers
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about all
        logout events between remote initiators to local targets."
::= { cIscsiGroups 9 }

cIscsiTargetAuthGroup OBJECT-GROUP
    OBJECTS {
        cIscsiTgtAuthRowStatus,
        cIscsiTgtAuthIdentity
    }
    STATUS current
    DESCRIPTION
        "."
::= { cIscsiGroups 10 }

cIscsiInitiatorAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiIntrLoginFailures,
        cIscsiIntrLastFailureTime,
        cIscsiIntrLastFailureType,
        cIscsiIntrLastTgtFailureName,
        cIscsiIntrLastTgtFailureAddrType,
        cIscsiIntrLastTgtFailureAddr
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about
        all local initiators."
::= { cIscsiGroups 11 }

cIscsiInitiatorLoginStatsGroup OBJECT-GROUP
    OBJECTS {
        cIscsiIntrLoginAcceptRsps,
        cIscsiIntrLoginOtherFailRsps,
        cIscsiIntrLoginRedirectRsps,
        cIscsiIntrLoginAuthFailRsps,
        cIscsiIntrLoginAuthenticateFails,
        cIscsiIntrLoginNegotiateFails
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about all
        login attempts by local initiators to remote targets."
::= { cIscsiGroups 12 }

cIscsiInitiatorLogoutStatsGroup OBJECT-GROUP
    OBJECTS {
        cIscsiIntrLogoutNormals,
        cIscsiIntrLogoutOthers
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about all
        logout events between local initiators to remote targets."
::= { cIscsiGroups 13 }

cIscsiInitiatorAuthGroup OBJECT-GROUP
    OBJECTS {
        cIscsiIntrAuthRowStatus,
        cIscsiIntrAuthIdentity
    }
    STATUS current
    DESCRIPTION
        "."
::= { cIscsiGroups 14 }

cIscsiSessionAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiSsnDirection,
        cIscsiSsnInitiatorName,
        cIscsiSsnTargetName,
        cIscsiSsnTsih,
        cIscsiSsnIsid,
        cIscsiSsnInitiatorAlias,
        cIscsiSsnTargetAlias,
        cIscsiSsnInitialR2T,
        cIscsiSsnBidiInitialR2T,
        cIscsiSsnImmediateData,
        cIscsiSsnType,
        cIscsiSsnMaxOutstandingR2T,
        cIscsiSsnFirstBurstSize,
        cIscsiSsnMaxBurstSize,
        cIscsiSsnConnectionNumber,
        cIscsiSsnAuthIdentity,
        cIscsiSsnDataSequenceInOrder,
        cIscsiSsnDataPduInOrder,
        cIscsiSsnErrorRecoveryLevel
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information applicable to
        all sessions."
::= { cIscsiGroups 15 }

cIscsiSessionStatsGroup OBJECT-GROUP
    OBJECTS {
        cIscsiSsnCmdPdus,
        cIscsiSsnRspPdus,
        cIscsiSsnTxDataOctets,
        cIscsiSsnRxDataOctets
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about message
        and data traffic for all sessions."
::= { cIscsiGroups 16 }

cIscsiSessionCxnErrorStatsGroup OBJECT-GROUP
    OBJECTS {
        cIscsiSsnDigestErrors,
        cIscsiSsnCxnTimeoutErrors
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about connection
        errors for all sessions."
::= { cIscsiGroups 17 }

cIscsiConnectionAttributesGroup OBJECT-GROUP
    OBJECTS {
        cIscsiCxnCid,
        cIscsiCxnState,
        cIscsiCxnProtocol,
        cIscsiCxnLocalAddrType,
        cIscsiCxnLocalAddr,
        cIscsiCxnLocalPort,
        cIscsiCxnRemoteAddrType,
        cIscsiCxnRemoteAddr,
        cIscsiCxnRemotePort,
        cIscsiCxnMaxRecvDataSegLength,
        cIscsiCxnHeaderIntegrity,
        cIscsiCxnDataIntegrity,
        cIscsiCxnRecvMarker,
        cIscsiCxnSendMarker
    }
    STATUS current
    DESCRIPTION
        "A collection of objects providing information about all
        connections used by all sessions."
::= { cIscsiGroups 18 }

cIscsiTgtLgnNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        cIscsiTgtLoginFailure
    }
    STATUS current
    DESCRIPTION
        "A collection of notifications which indicate a login
        failure from a remote initiator to a local target."
::= { cIscsiGroups 19 }

cIscsiIntrLgnNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        cIscsiIntrLoginFailure
    }
    STATUS current
    DESCRIPTION
        "A collection of notifications which indicate a login
        failure from a local initiator to a remote target."
::= { cIscsiGroups 20 }

cIscsiSsnFlrNotificationsGroup NOTIFICATION-GROUP
    NOTIFICATIONS {
        cIscsiInstSessionFailure
    }
    STATUS current
    DESCRIPTION
        "A collection of notifications which indicate session
        failures occurring after login."
::= { cIscsiGroups 21 }


cIscsiCompliances OBJECT IDENTIFIER ::= { cIscsiConformance 2 }

cIscsiComplianceV1 MODULE-COMPLIANCE
    STATUS current
    DESCRIPTION
        "Initial version of compliance statement based on
        initial version of MIB.

        If an implementation can be both a target and an
        initiator, all groups are mandatory."
    MODULE       -- this module
    MANDATORY-GROUPS {
        cIscsiInstanceAttributesGroup,
        cIscsiPortalAttributesGroup,
        cIscsiNodeAttributesGroup,
        cIscsiSessionAttributesGroup,
        cIscsiSessionStatsGroup,
        cIscsiSessionCxnErrorStatsGroup,
        cIscsiConnectionAttributesGroup,
        cIscsiSsnFlrNotificationsGroup,
        cIscsiInstanceSsnErrorStatsGroup
    }

    -- Conditionally mandatory groups to be included with
    -- the mandatory groups when the implementation has
    -- iSCSI target facilities.

    GROUP cIscsiTgtPortalAttributesGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI target facilities."

    GROUP cIscsiTargetAttributesGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI target facilities."

    GROUP cIscsiTargetLoginStatsGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI target facilities."

    GROUP cIscsiTargetLogoutStatsGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI target facilities."

    GROUP cIscsiTgtLgnNotificationsGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI target facilities."

    GROUP cIscsiTargetAuthGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI target facilities."

    -- Conditionally mandatory groups to be included with
    -- the mandatory groups when the implementation has
    -- iSCSI initiator facilities.

    GROUP cIscsiIntrPortalAttributesGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI initiator facilities."

    GROUP cIscsiInitiatorAttributesGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI initiator facilities."
   
    GROUP cIscsiInitiatorLoginStatsGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI initiator facilities."

    GROUP cIscsiInitiatorLogoutStatsGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI initiator facilities."

    GROUP cIscsiIntrLgnNotificationsGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI initiator facilities."

    GROUP cIscsiInitiatorAuthGroup
    DESCRIPTION
        "This group is mandatory for all iSCSI implementations
        that have iSCSI initiator facilities."

::= { cIscsiCompliances 1 }

END
