// Copyright (c) 2005 DMTF.  All rights reserved.
   [Version ( "2.11.0" ), 
    UMLPackagePath ( "CIM::Network::Pipes" ), 
    Description ( 
       "iSCSISession is a network pipe between an initiator and target "
       "SCSIProtocolEndpoints. An iSCSISession is composed of one or "
       "more TCP connections which MUST be selected from a "
       "SystemSpecificCollection representing an iSCSI Portal Group. "
       "NetworkPipeComposition aggregates NetworkPipe instances "
       "representing iSCSI connections, which are associated to "
       "TCPProtocolEndpoints. Only an iSCSI initiator can create an "
       "iSCSI Session, an iSCSI Target MUST accept (or reject) a "
       "session request. EndOfNetworkPipe associates iSCSISession with "
       "SCSIProtocolEndpoint." )]
class CIM_iSCSISession : CIM_NetworkPipe {

      [Override ( "Directionality" ), 
       Description ( "iSCSI sessions MUST be bidirectional." ), 
       ValueMap { "2" }, 
       Values { "Bi-Directional" }]
   uint16 Directionality = 2;

      [Description ( "iSCSI Session type." ), 
       ValueMap { "2", "3" }, 
       Values { "Discovery", "Normal" }, 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnType" }]
   uint16 SessionType;

      [Description ( 
          "The Target Session Identifying Handle (TSIH) for this session."
           ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnTSIH" }]
   uint32 TSIH;

      [Description ( 
          "The iSCSI Port Name (iSCSIProtocolEndPoint.Name), of the "
          "device at the other end of this iSCSISession." ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnInitiatorName", 
          "MIB.IETF|iSCSI-MIB.iscsiSsnTargetName" }]
   string EndPointName;

      [Description ( 
          "The number of transport protocol connections that "
          "currently belong to this session." ), 
       MinValue ( 1 ), 
       MaxValue ( 65535 ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnConnectionNumber" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.MaxConnectionsPerSession" }]
   uint32 CurrentConnections;

      [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 iscsiSsnFirstBurstLength and the expected "
          "data transfer length of the request." ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnInitialR2T" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.InitialR2TPreference" }]
   boolean InitialR2T;

      [Description ( 
          "Indicates whether the initiator and target have agreed "
          "to support immediate data on this session." ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnImmediateData" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.ImmediateDataPreference" }]
   boolean ImmediateData;

      [Description ( 
          "The maximum number of outstanding request-to-transmit "
          "(R2T)s per iSCSI task within this session." ), 
       Units ( "Bytes" ), 
       MinValue ( 1 ), 
       MaxValue ( 65535 ), 
       MappingStrings { 
          "MIB.IETF|iSCSI-MIB.iscsiSsnMaxOutstandingR2T" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.MaxOutstandingR2T" }]
   uint32 MaxOutstandingR2T;

      [Description ( 
          "The maximum length supported for unsolicited data sent "
          "within this session." ), 
       Units ( "Bytes" ), 
       MinValue ( 512 ), 
       MaxValue ( 16777215 ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnFirstBurstLength" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.MaxUnsolicitedFirstDataBurstLength" }]
   uint32 MaxUnsolicitedFirstDataBurstLength;

      [Description ( 
          "The maximum number of bytes which can be sent within a "
          "single sequence of Data-In or Data-Out PDUs." ), 
       Units ( "Bytes" ), 
       MinValue ( 512 ), 
       MaxValue ( 16777215 ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnMaxBurstLength" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.MaxDataBurstLength" }]
   uint32 MaxDataBurstLength;

      [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." ), 
       MappingStrings { 
          "MIB.IETF|iSCSI-MIB.iscsiSsnDataSequenceInOrder" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.DataSequenceInOrderPreference" }]
   boolean DataSequenceInOrder;

      [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." ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiSsnDataPDUInOrder" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.DataPDUInOrderPreference" }]
   boolean DataPDUInOrder;

      [Description ( 
          "The level of error recovery negotiated between the "
          "initiator and the target. Higher numbers represent more "
          "detailed recovery schemes." ), 
       MinValue ( 1 ), 
       MaxValue ( 255 ), 
       MappingStrings { 
          "MIB.IETF|iSCSI-MIB.iscsiSsnErrorRecoveryLevel" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.ErrorRecoveryLevelPreference" }]
   uint32 ErrorRecoveryLevel;

      [Description ( 
          "The maximum number of connections allowed in this session."
           ), 
       MinValue ( 1 ), 
       MaxValue ( 65535 ), 
       MappingStrings { "MIB.IETF|iSCSI-MIB.iscsiNodeMaxConnections" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.MaxConnectionsPerSession" }]
   uint32 MaxConnectionsPerSession;

      [Description ( 
          "The DefaultTime2Wait negotiated for this Session. This "
          "is the minimum time, in seconds, to wait before "
          "attempting an explicit/implicit logout or active iSCSI "
          "task reassignment after an unexpected connection "
          "termination or a connection reset." ), 
       Units ( "Seconds" ), 
       MinValue ( 0 ), 
       MaxValue ( 3600 ), 
       MappingStrings { 
          "MIB.IETF|iSCSI-MIB.iscsiNodeDefaultTime2Wait" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.DefaultTimeToWaitPreference" }]
   uint32 DefaultTimeToWait;

      [Description ( 
          "The DefaultTime2Retain negotiated for this Session. This "
          "is the maximum time, in seconds after an initial wait "
          "(Time2Wait), before which an active iSCSI task "
          "reassignment is still possible after an unexpected "
          "connection termination or a connection reset." ), 
       Units ( "Seconds" ), 
       MinValue ( 0 ), 
       MaxValue ( 3600 ), 
       MappingStrings { 
          "MIB.IETF|iSCSI-MIB.iscsiNodeDefaultTime2Retain" }, 
       ModelCorrespondence { 
          "CIM_iSCSISessionSettings.DefaultTimeToRetainPreference" }]
   uint32 DefaultTimeToRetain;


};
