iscsi_spec.h File Reference

iSCSI specification definitions More...

Data Structures

struct  iscsi_bhs
 
struct  iscsi_bhs_async
 
struct  iscsi_bhs_login_req
 
struct  iscsi_bhs_login_rsp
 
struct  iscsi_bhs_logout_req
 
struct  iscsi_bhs_logout_resp
 
struct  iscsi_bhs_nop_in
 
struct  iscsi_bhs_nop_out
 
struct  iscsi_bhs_r2t
 
struct  iscsi_bhs_reject
 
struct  iscsi_bhs_scsi_req
 
struct  iscsi_bhs_scsi_resp
 
struct  iscsi_bhs_data_in
 
struct  iscsi_bhs_data_out
 
struct  iscsi_bhs_snack_req
 
struct  iscsi_bhs_task_req
 
struct  iscsi_bhs_task_resp
 
struct  iscsi_bhs_text_req
 
struct  iscsi_bhs_text_resp
 
struct  iscsi_ahs
 

Macros

#define ISCSI_BHS_LEN   48
 
#define ISCSI_DIGEST_LEN   4
 
#define ISCSI_ALIGNMENT   4
 
#define ISCSI_VERSION   0x00
 support version - RFC3720(10.12.4)
 
#define ISCSI_ALIGN(SIZE)    (((SIZE) + (ISCSI_ALIGNMENT - 1)) & ~(ISCSI_ALIGNMENT - 1))
 
#define ISCSI_TEXT_MAX_VAL_LEN   8192
 for authentication key (non encoded 1024bytes) RFC3720(5.1/11.1.4)
 
#define ISCSI_TEXT_MAX_SIMPLE_VAL_LEN   255
 RFC 3720 5.1 If not otherwise specified, the maximum length of a simple-value (not its encoded representation) is 255 bytes, not including the delimiter (comma or zero byte).
 
#define ISCSI_TEXT_MAX_KEY_LEN   63
 
#define ISCSI_FLAG_FINAL   0x80
 
#define ISCSI_LOGIN_TRANSIT   0x80
 
#define ISCSI_LOGIN_CONTINUE   0x40
 
#define ISCSI_LOGIN_CURRENT_STAGE_MASK   0x0c
 
#define ISCSI_LOGIN_CURRENT_STAGE_0   0x04
 
#define ISCSI_LOGIN_CURRENT_STAGE_1   0x08
 
#define ISCSI_LOGIN_CURRENT_STAGE_3   0x0c
 
#define ISCSI_LOGIN_NEXT_STAGE_MASK   0x03
 
#define ISCSI_LOGIN_NEXT_STAGE_0   0x01
 
#define ISCSI_LOGIN_NEXT_STAGE_1   0x02
 
#define ISCSI_LOGIN_NEXT_STAGE_3   0x03
 
#define ISCSI_TEXT_CONTINUE   0x40
 
#define ISCSI_DATAIN_ACKNOWLEDGE   0x40
 
#define ISCSI_DATAIN_OVERFLOW   0x04
 
#define ISCSI_DATAIN_UNDERFLOW   0x02
 
#define ISCSI_DATAIN_STATUS   0x01
 
#define ISCSI_SCSI_BIDI_OVERFLOW   0x10
 
#define ISCSI_SCSI_BIDI_UNDERFLOW   0x08
 
#define ISCSI_SCSI_OVERFLOW   0x04
 
#define ISCSI_SCSI_UNDERFLOW   0x02
 
#define ISCSI_TASK_FUNCTION_MASK   0x7f
 
#define ISCSI_REASON_RESERVED   0x1
 
#define ISCSI_REASON_DATA_DIGEST_ERROR   0x2
 
#define ISCSI_REASON_DATA_SNACK_REJECT   0x3
 
#define ISCSI_REASON_PROTOCOL_ERROR   0x4
 
#define ISCSI_REASON_CMD_NOT_SUPPORTED   0x5
 
#define ISCSI_REASON_IMM_CMD_REJECT   0x6
 
#define ISCSI_REASON_TASK_IN_PROGRESS   0x7
 
#define ISCSI_REASON_INVALID_SNACK   0x8
 
#define ISCSI_REASON_INVALID_PDU_FIELD   0x9
 
#define ISCSI_REASON_LONG_OPERATION_REJECT   0xa
 
#define ISCSI_REASON_NEGOTIATION_RESET   0xb
 
#define ISCSI_REASON_WAIT_FOR_RESET   0xc
 
#define ISCSI_FLAG_SNACK_TYPE_DATA   0
 
#define ISCSI_FLAG_SNACK_TYPE_R2T   0
 
#define ISCSI_FLAG_SNACK_TYPE_STATUS   1
 
#define ISCSI_FLAG_SNACK_TYPE_DATA_ACK   2
 
#define ISCSI_FLAG_SNACK_TYPE_RDATA   3
 
#define ISCSI_FLAG_SNACK_TYPE_MASK   0x0F /* 4 bits */
 
#define ISCSI_BHS_LOGIN_GET_TBIT(X)   (!!(X & ISCSI_LOGIN_TRANSIT))
 
#define ISCSI_BHS_LOGIN_GET_CBIT(X)   (!!(X & ISCSI_LOGIN_CONTINUE))
 
#define ISCSI_BHS_LOGIN_GET_CSG(X)   ((X & ISCSI_LOGIN_CURRENT_STAGE_MASK) >> 2)
 
#define ISCSI_BHS_LOGIN_GET_NSG(X)   (X & ISCSI_LOGIN_NEXT_STAGE_MASK)
 
#define ISCSI_CLASS_SUCCESS   0x00
 
#define ISCSI_CLASS_REDIRECT   0x01
 
#define ISCSI_CLASS_INITIATOR_ERROR   0x02
 
#define ISCSI_CLASS_TARGET_ERROR   0x03
 
#define ISCSI_LOGIN_ACCEPT   0x00
 
#define ISCSI_LOGIN_TARGET_TEMPORARILY_MOVED   0x01
 
#define ISCSI_LOGIN_TARGET_PERMANENTLY_MOVED   0x02
 
#define ISCSI_LOGIN_INITIATOR_ERROR   0x00
 
#define ISCSI_LOGIN_AUTHENT_FAIL   0x01
 
#define ISCSI_LOGIN_AUTHORIZATION_FAIL   0x02
 
#define ISCSI_LOGIN_TARGET_NOT_FOUND   0x03
 
#define ISCSI_LOGIN_TARGET_REMOVED   0x04
 
#define ISCSI_LOGIN_UNSUPPORTED_VERSION   0x05
 
#define ISCSI_LOGIN_TOO_MANY_CONNECTIONS   0x06
 
#define ISCSI_LOGIN_MISSING_PARMS   0x07
 
#define ISCSI_LOGIN_CONN_ADD_FAIL   0x08
 
#define ISCSI_LOGIN_NOT_SUPPORTED_SESSION_TYPE   0x09
 
#define ISCSI_LOGIN_NO_SESSION   0x0a
 
#define ISCSI_LOGIN_INVALID_LOGIN_REQUEST   0x0b
 
#define ISCSI_LOGIN_STATUS_TARGET_ERROR   0x00
 
#define ISCSI_LOGIN_STATUS_SERVICE_UNAVAILABLE   0x01
 
#define ISCSI_LOGIN_STATUS_NO_RESOURCES   0x02
 

Enumerations

enum  iscsi_op {
  ISCSI_OP_NOPOUT = 0x00 , ISCSI_OP_SCSI = 0x01 , ISCSI_OP_TASK = 0x02 , ISCSI_OP_LOGIN = 0x03 ,
  ISCSI_OP_TEXT = 0x04 , ISCSI_OP_SCSI_DATAOUT = 0x05 , ISCSI_OP_LOGOUT = 0x06 , ISCSI_OP_SNACK = 0x10 ,
  ISCSI_OP_VENDOR_1C = 0x1c , ISCSI_OP_VENDOR_1D = 0x1d , ISCSI_OP_VENDOR_1E = 0x1e , ISCSI_OP_NOPIN = 0x20 ,
  ISCSI_OP_SCSI_RSP = 0x21 , ISCSI_OP_TASK_RSP = 0x22 , ISCSI_OP_LOGIN_RSP = 0x23 , ISCSI_OP_TEXT_RSP = 0x24 ,
  ISCSI_OP_SCSI_DATAIN = 0x25 , ISCSI_OP_LOGOUT_RSP = 0x26 , ISCSI_OP_R2T = 0x31 , ISCSI_OP_ASYNC = 0x32 ,
  ISCSI_OP_VENDOR_3C = 0x3c , ISCSI_OP_VENDOR_3D = 0x3d , ISCSI_OP_VENDOR_3E = 0x3e , ISCSI_OP_REJECT = 0x3f
}
 
enum  iscsi_task_func {
  ISCSI_TASK_FUNC_ABORT_TASK = 1 , ISCSI_TASK_FUNC_ABORT_TASK_SET = 2 , ISCSI_TASK_FUNC_CLEAR_ACA = 3 , ISCSI_TASK_FUNC_CLEAR_TASK_SET = 4 ,
  ISCSI_TASK_FUNC_LOGICAL_UNIT_RESET = 5 , ISCSI_TASK_FUNC_TARGET_WARM_RESET = 6 , ISCSI_TASK_FUNC_TARGET_COLD_RESET = 7 , ISCSI_TASK_FUNC_TASK_REASSIGN = 8
}
 
enum  iscsi_task_func_resp {
  ISCSI_TASK_FUNC_RESP_COMPLETE = 0 , ISCSI_TASK_FUNC_RESP_TASK_NOT_EXIST = 1 , ISCSI_TASK_FUNC_RESP_LUN_NOT_EXIST = 2 , ISCSI_TASK_FUNC_RESP_TASK_STILL_ALLEGIANT = 3 ,
  ISCSI_TASK_FUNC_RESP_REASSIGNMENT_NOT_SUPPORTED = 4 , ISCSI_TASK_FUNC_RESP_FUNC_NOT_SUPPORTED = 5 , ISCSI_TASK_FUNC_RESP_AUTHORIZATION_FAILED = 6 , ISCSI_TASK_FUNC_REJECTED = 255
}
 

Functions

 SPDK_STATIC_ASSERT (sizeof(struct iscsi_bhs)==ISCSI_BHS_LEN, "ISCSI_BHS_LEN mismatch")
 

Detailed Description

iSCSI specification definitions