⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 iscsi_hdr.h

📁 iscsi企业级target.很好用
💻 H
字号:
/* * Copyright (C) 2002-2003 Ardis Technolgies <roman@ardistech.com> * * Released under the terms of the GNU GPL v2.0. */#ifndef __ISCSI_HDR_H__#define __ISCSI_HDR_H__#include <linux/types.h>#include <asm/byteorder.h>#define ISCSI_VERSION			0#define __packed __attribute__ ((packed))struct iscsi_hdr {	u8  opcode;			/* 0 */	u8  flags;	u8  spec1[2];#if defined(__BIG_ENDIAN_BITFIELD)	struct {			/* 4 */		unsigned ahslength : 8;		unsigned datalength : 24;	} length;#elif defined(__LITTLE_ENDIAN_BITFIELD)	u32 length;			/* 4 */#endif	u16 lun[4];			/* 8 */	u32 itt;			/* 16 */	u32 ttt;			/* 20 */	u32 sn;				/* 24 */	u32 exp_sn;			/* 28 */	u32 max_sn;			/* 32 */	u32 spec3[3];			/* 36 */} __packed;				/* 48 *//* Opcode encoding bits */#define ISCSI_OP_RETRY			0x80#define ISCSI_OP_IMMEDIATE		0x40#define ISCSI_OPCODE_MASK		0x3F/* Client to Server Message Opcode values */#define ISCSI_OP_NOOP_OUT		0x00#define ISCSI_OP_SCSI_CMD		0x01#define ISCSI_OP_SCSI_TASK_MGT_MSG	0x02#define ISCSI_OP_LOGIN_CMD		0x03#define ISCSI_OP_TEXT_CMD		0x04#define ISCSI_OP_SCSI_DATA_OUT		0x05#define ISCSI_OP_LOGOUT_CMD		0x06#define ISCSI_OP_SNACK_CMD		0x10#define ISCSI_OP_VENDOR1_CMD		0x1c#define ISCSI_OP_VENDOR2_CMD		0x1d#define ISCSI_OP_VENDOR3_CMD		0x1e#define ISCSI_OP_VENDOR4_CMD		0x1f/* Server to Client Message Opcode values */#define ISCSI_OP_NOOP_IN		0x20#define ISCSI_OP_SCSI_RSP		0x21#define ISCSI_OP_SCSI_TASK_MGT_RSP	0x22#define ISCSI_OP_LOGIN_RSP		0x23#define ISCSI_OP_TEXT_RSP		0x24#define ISCSI_OP_SCSI_DATA_IN		0x25#define ISCSI_OP_LOGOUT_RSP		0x26#define ISCSI_OP_R2T			0x31#define ISCSI_OP_ASYNC_MSG		0x32#define ISCSI_OP_REJECT			0x3fstruct iscsi_ahs_hdr {	u16 ahslength;	u8 ahstype;} __packed;#define ISCSI_AHSTYPE_CDB		1#define ISCSI_AHSTYPE_RLENGTH		2union iscsi_sid {	struct {		u8 isid[6];		/* Initiator Session ID */		u16 tsih;		/* Target Session ID */	} id;	u64 id64;} __packed;struct iscsi_scsi_cmd_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u16 lun[4];	u32 itt;	u32 data_length;	u32 cmd_sn;	u32 exp_stat_sn;	u8  scb[16];} __packed;#define ISCSI_CMD_FINAL		0x80#define ISCSI_CMD_READ		0x40#define ISCSI_CMD_WRITE		0x20#define ISCSI_CMD_ATTR_MASK	0x07#define ISCSI_CMD_UNTAGGED	0x00#define ISCSI_CMD_SIMPLE	0x01#define ISCSI_CMD_ORDERED	0x02#define ISCSI_CMD_HEAD_OF_QUEUE	0x03#define ISCSI_CMD_ACA		0x04struct iscsi_cdb_ahdr {	u16 ahslength;	u8  ahstype;	u8  reserved;	u8  cdb[0];} __packed;struct iscsi_rlength_ahdr {	u16 ahslength;	u8  ahstype;	u8  reserved;	u32 read_length;} __packed;struct iscsi_scsi_rsp_hdr {	u8  opcode;	u8  flags;	u8  response;	u8  cmd_status;	u8  ahslength;	u8  datalength[3];	u32 rsvd1[2];	u32 itt;	u32 snack;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u32 exp_data_sn;	u32 bi_residual_count;	u32 residual_count;} __packed;#define ISCSI_FLG_RESIDUAL_UNDERFLOW		0x02#define ISCSI_FLG_RESIDUAL_OVERFLOW		0x04#define ISCSI_FLG_BIRESIDUAL_UNDERFLOW		0x08#define ISCSI_FLG_BIRESIDUAL_OVERFLOW		0x10#define ISCSI_RESPONSE_COMMAND_COMPLETED	0x00#define ISCSI_RESPONSE_TARGET_FAILURE		0x01struct iscsi_sense_data {	u16 length;	u8  data[0];} __packed;struct iscsi_task_mgt_hdr {	u8  opcode;	u8  function;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u16 lun[4];	u32 itt;	u32 rtt;	u32 cmd_sn;	u32 exp_stat_sn;	u32 ref_cmd_sn;	u32 exp_data_sn;	u32 rsvd2[2];} __packed;#define ISCSI_FUNCTION_MASK			0x7f#define ISCSI_FUNCTION_ABORT_TASK		1#define ISCSI_FUNCTION_ABORT_TASK_SET		2#define ISCSI_FUNCTION_CLEAR_ACA		3#define ISCSI_FUNCTION_CLEAR_TASK_SET		4#define ISCSI_FUNCTION_LOGICAL_UNIT_RESET	5#define ISCSI_FUNCTION_TARGET_WARM_RESET	6#define ISCSI_FUNCTION_TARGET_COLD_RESET	7#define ISCSI_FUNCTION_TASK_REASSIGN		8struct iscsi_task_rsp_hdr {	u8  opcode;	u8  flags;	u8  response;	u8  rsvd1;	u8  ahslength;	u8  datalength[3];	u32 rsvd2[2];	u32 itt;	u32 rsvd3;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u32 rsvd4[3];} __packed;#define ISCSI_RESPONSE_FUNCTION_COMPLETE	0#define ISCSI_RESPONSE_UNKNOWN_TASK		1#define ISCSI_RESPONSE_UNKNOWN_LUN		2#define ISCSI_RESPONSE_TASK_ALLEGIANT		3#define ISCSI_RESPONSE_FAILOVER_UNSUPPORTED	4#define ISCSI_RESPONSE_FUNCTION_UNSUPPORTED	5#define ISCSI_RESPONSE_NO_AUTHORIZATION		6#define ISCSI_RESPONSE_FUNCTION_REJECTED	255struct iscsi_data_out_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u16 lun[4];	u32 itt;	u32 ttt;	u32 rsvd2;	u32 exp_stat_sn;	u32 rsvd3;	u32 data_sn;	u32 buffer_offset;	u32 rsvd4;} __packed;struct iscsi_data_in_hdr {	u8  opcode;	u8  flags;	u8  rsvd1;	u8  cmd_status;	u8  ahslength;	u8  datalength[3];	u32 rsvd2[2];	u32 itt;	u32 ttt;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u32 data_sn;	u32 buffer_offset;	u32 residual_count;} __packed;#define ISCSI_FLG_STATUS		0x01struct iscsi_r2t_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u16 lun[4];	u32 itt;	u32 ttt;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u32 r2t_sn;	u32 buffer_offset;	u32 data_length;} __packed;struct iscsi_async_msg_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u16 lun[4];	u32 ffffffff;	u32 rsvd2;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u8  async_event;	u8  async_vcode;	u16 param1;	u16 param2;	u16 param3;	u32 rsvd3;} __packed;#define ISCSI_ASYNC_SCSI		0#define ISCSI_ASYNC_LOGOUT		1#define ISCSI_ASYNC_DROP_CONNECTION	2#define ISCSI_ASYNC_DROP_SESSION	3#define ISCSI_ASYNC_PARAM_REQUEST	4#define ISCSI_ASYNC_VENDOR		255struct iscsi_text_req_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u32 rsvd2[2];	u32 itt;	u32 ttt;	u32 cmd_sn;	u32 exp_stat_sn;	u32 rsvd3[4];} __packed;struct iscsi_text_rsp_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u32 rsvd2[2];	u32 itt;	u32 ttt;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u32 rsvd3[3];} __packed;struct iscsi_login_req_hdr {	u8  opcode;	u8  flags;	u8  max_version;		/* Max. version supported */	u8  min_version;		/* Min. version supported */	u8  ahslength;	u8  datalength[3];	union iscsi_sid sid;	u32 itt;			/* Initiator Task Tag */	u16 cid;			/* Connection ID */	u16 rsvd1;	u32 cmd_sn;	u32 exp_stat_sn;	u32 rsvd2[4];} __packed;struct iscsi_login_rsp_hdr {	u8  opcode;	u8  flags;	u8  max_version;		/* Max. version supported */	u8  active_version;		/* Active version */	u8  ahslength;	u8  datalength[3];	union iscsi_sid sid;	u32 itt;			/* Initiator Task Tag */	u32 rsvd1;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u8  status_class;		/* see Login RSP ststus classes below */	u8  status_detail;		/* see Login RSP Status details below */	u8  rsvd2[10];} __packed;#define ISCSI_FLG_FINAL			0x80#define ISCSI_FLG_TRANSIT		0x80#define ISCSI_FLG_CSG_SECURITY		0x00#define ISCSI_FLG_CSG_LOGIN		0x04#define ISCSI_FLG_CSG_FULL_FEATURE	0x0c#define ISCSI_FLG_CSG_MASK		0x0c#define ISCSI_FLG_NSG_SECURITY		0x00#define ISCSI_FLG_NSG_LOGIN		0x01#define ISCSI_FLG_NSG_FULL_FEATURE	0x03#define ISCSI_FLG_NSG_MASK		0x03/* Login Status response classes */#define ISCSI_STATUS_SUCCESS		0x00#define ISCSI_STATUS_REDIRECT		0x01#define ISCSI_STATUS_INITIATOR_ERR	0x02#define ISCSI_STATUS_TARGET_ERR		0x03/* Login Status response detail codes *//* Class-0 (Success) */#define ISCSI_STATUS_ACCEPT		0x00/* Class-1 (Redirection) */#define ISCSI_STATUS_TGT_MOVED_TEMP	0x01#define ISCSI_STATUS_TGT_MOVED_PERM	0x02/* Class-2 (Initiator Error) */#define ISCSI_STATUS_INIT_ERR		0x00#define ISCSI_STATUS_AUTH_FAILED	0x01#define ISCSI_STATUS_TGT_FORBIDDEN	0x02#define ISCSI_STATUS_TGT_NOT_FOUND	0x03#define ISCSI_STATUS_TGT_REMOVED	0x04#define ISCSI_STATUS_NO_VERSION		0x05#define ISCSI_STATUS_TOO_MANY_CONN	0x06#define ISCSI_STATUS_MISSING_FIELDS	0x07#define ISCSI_STATUS_CONN_ADD_FAILED	0x08#define ISCSI_STATUS_INV_SESSION_TYPE	0x09#define ISCSI_STATUS_SESSION_NOT_FOUND	0x0a#define ISCSI_STATUS_INV_REQ_TYPE	0x0b/* Class-3 (Target Error) */#define ISCSI_STATUS_TARGET_ERROR	0x00#define ISCSI_STATUS_SVC_UNAVAILABLE	0x01#define ISCSI_STATUS_NO_RESOURCES	0x02struct iscsi_logout_req_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u32 rsvd2[2];	u32 itt;	u16 cid;	u16 rsvd3;	u32 cmd_sn;	u32 exp_stat_sn;	u32 rsvd4[4];} __packed;struct iscsi_logout_rsp_hdr {	u8  opcode;	u8  flags;	u8  response;	u8  rsvd1;	u8  ahslength;	u8  datalength[3];	u32 rsvd2[2];	u32 itt;	u32 rsvd3;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u32 rsvd4;	u16 time2wait;	u16 time2retain;	u32 rsvd5;} __packed;struct iscsi_snack_req_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u32 rsvd2[2];	u32 itt;	u32 ttt;	u32 rsvd3;	u32 exp_stat_sn;	u32 rsvd4[2];	u32 beg_run;	u32 run_length;} __packed;struct iscsi_reject_hdr {	u8  opcode;	u8  flags;	u8  reason;	u8  rsvd1;	u8  ahslength;	u8  datalength[3];	u32 rsvd2[2];	u32 ffffffff;	u32 rsvd3;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u32 data_sn;	u32 rsvd4[2];} __packed;#define ISCSI_REASON_NO_FULL_FEATURE_PHASE	0x01#define ISCSI_REASON_DATA_DIGEST_ERROR		0x02#define ISCSI_REASON_DATA_SNACK_REJECT		0x03#define ISCSI_REASON_PROTOCOL_ERROR		0x04#define ISCSI_REASON_UNSUPPORTED_COMMAND	0x05#define ISCSI_REASON_IMMEDIATE_COMMAND_REJECT	0x06#define ISCSI_REASON_TASK_IN_PROGRESS		0x07#define ISCSI_REASON_INVALID_SNACK		0x08#define ISCSI_REASON_NO_BOOKMARK		0x09#define ISCSI_REASON_BOOKMARK_REJECT		0x0a#define ISCSI_REASON_NEGOTIATION_RESET		0x0b#define ISCSI_REASON_WAITING_LOGOUT		0x0cstruct iscsi_nop_out_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u16 lun[4];	u32 itt;	u32 ttt;	u32 cmd_sn;	u32 exp_stat_sn;	u32 rsvd2[4];} __packed;struct iscsi_nop_in_hdr {	u8  opcode;	u8  flags;	u16 rsvd1;	u8  ahslength;	u8  datalength[3];	u16 lun[4];	u32 itt;	u32 ttt;	u32 stat_sn;	u32 exp_cmd_sn;	u32 max_cmd_sn;	u32 rsvd2[3];} __packed;#define ISCSI_RESERVED_TAG	(0xffffffffU)#endif	/* __ISCSI_HDR_H__ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -