📄 iscsi-protocol.h
字号:
UINT8 rsvd3[12];};/* Response values */#define SCSI_TCP_TM_RESP_COMPLETE 0x00#define SCSI_TCP_TM_RESP_NO_TASK 0x01#define SCSI_TCP_TM_RESP_NO_LUN 0x02#define SCSI_TCP_TM_RESP_TASK_ALLEGIANT 0x03#define SCSI_TCP_TM_RESP_NO_FAILOVER 0x04#define SCSI_TCP_TM_RESP_IN_PRGRESS 0x05#define SCSI_TCP_TM_RESP_REJECTED 0xff/* Ready To Transfer Header */struct IscsiRttHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 fbit:1, rsvd1:7;#else UINT8 rsvd1:7, fbit:1;#endif UINT8 rsvd2[2]; UINT8 rsvd3[12]; UINT32 itt; /* Initiator Task Tag */ UINT32 ttt; /* Target Transfer Tag */ UINT32 statsn; UINT32 expcmdsn; UINT32 maxcmdsn; UINT32 rttsn; UINT32 data_offset; UINT32 data_length;};/* SCSI Data Hdr */struct IscsiDataHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 final:1, rsvd1:7;#else UINT8 rsvd1:7, final:1;#endif UINT8 rsvd2[2]; UINT8 rsvd3; UINT8 dlength[3]; UINT8 lun[8]; UINT32 itt; UINT32 ttt; UINT32 rsvd4; UINT32 expstatsn; UINT32 rsvd5; UINT32 datasn; UINT32 offset; UINT32 rsvd6; /* Payload */};/* SCSI Data Response Hdr */struct IscsiDataRspHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 final:1, ack:1, rsvd1:3, overflow:1, underflow:1, status_present:1;#else UINT8 status_present:1, underflow:1, overflow:1, rsvd1:3, ack:1, final:1;#endif UINT8 rsvd2; UINT8 cmd_status; UINT8 hlength; UINT8 dlength[3]; UINT8 lun[8]; UINT32 itt; UINT32 ttt; UINT32 statsn; UINT32 expcmdsn; UINT32 maxcmdsn; UINT32 datasn; UINT32 offset; UINT32 residual_count;};/* Text Header */struct IscsiTextHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 final:1, cbit:1, rsvd1:6;#else UINT8 rsvd1:6, cbit:1, final:1;#endif UINT8 rsvd2[2]; UINT8 hlength; UINT8 dlength[3]; UINT8 rsvd4[8]; UINT32 itt; UINT32 ttt; UINT32 cmdsn; UINT32 expstatsn; UINT8 rsvd5[16]; /* Text - key=value pairs */};/* Text Response Header */struct IscsiTextRspHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 final:1, cbit:1, rsvd1:6;#else UINT8 rsvd1:6, cbit:1, final:1;#endif UINT8 rsvd2[2]; UINT8 hlength; UINT8 dlength[3]; UINT8 rsvd4[8]; UINT32 itt; UINT32 ttt; UINT32 statsn; UINT32 expcmdsn; UINT32 maxcmdsn; UINT8 rsvd5[12]; /* Text Response - key:value pairs */};/* Login Header */struct IscsiLoginHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 tbit:1, cbit:1, rsvd1:2, curr:2, next:2;#else UINT8 next:2, curr:2, rsvd1:2, cbit:1, tbit:1;#endif UINT8 max_version; /* Max. version supported */ UINT8 min_version; /* Min. version supported */ UINT8 hlength; UINT8 dlength[3]; UINT8 isid[6]; /* Initiator Session ID */ UINT16 tsid; /* Target Session ID */ UINT32 itt; /* Initiator Task Tag */ UINT16 cid; UINT16 rsvd3; UINT32 cmdsn; UINT32 expstatsn; UINT8 rsvd5[16];};/* Login Response Header */struct IscsiLoginRspHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 tbit:1, cbit:1, rsvd:2, curr:2, next:2;#else UINT8 next:2, curr:2, rsvd:2, cbit:1, tbit:1;#endif UINT8 max_version; /* Max. version supported */ UINT8 active_version; /* Active version */ UINT8 hlength; UINT8 dlength[3]; UINT8 isid[6]; /* Initiator Session ID */ UINT16 tsid; /* Target Session ID */ UINT32 itt; /* Initiator Task Tag */ UINT32 rsvd3; UINT32 statsn; UINT32 expcmdsn; UINT32 maxcmdsn; UINT8 status_class; /* see Login RSP ststus classes below */ UINT8 status_detail; /* see Login RSP Status details below */ UINT8 rsvd4[10];};/* Login stage (phase) codes for CNxSG */#define ISCSI_SECURITY_NEGOTIATION_PHASE 0#define ISCSI_OP_PARMS_NEGOTIATION_PHASE 1#define ISCSI_FULL_FEATURE_PHASE 3/* Login Status response classes */#define STATUS_CLASS_SUCCESS 0x00#define STATUS_CLASS_REDIRECT 0x01#define STATUS_CLASS_INITIATOR_ERR 0x02#define STATUS_CLASS_TARGET_ERR 0x03/* Login Status response detail codes *//* Class-0 (Success) */#define ISCSI_LOGIN_STATUS_ACCEPT 0x00/* Class-1 (Redirection) */#define ISCSI_LOGIN_STATUS_TGT_MOVED_TEMP 0x01#define ISCSI_LOGIN_STATUS_TGT_MOVED_PERM 0x02/* Class-2 (Initiator Error) */#define ISCSI_LOGIN_STATUS_INIT_ERR 0x00#define ISCSI_LOGIN_STATUS_AUTH_FAILED 0x01#define ISCSI_LOGIN_STATUS_TGT_FORBIDDEN 0x02#define ISCSI_LOGIN_STATUS_TGT_NOT_FOUND 0x03#define ISCSI_LOGIN_STATUS_TGT_REMOVED 0x04#define ISCSI_LOGIN_STATUS_NO_VERSION 0x05#define ISCSI_LOGIN_STATUS_ISID_ERROR 0x06#define ISCSI_LOGIN_STATUS_MISSING_FIELDS 0x07#define ISCSI_LOGIN_STATUS_CONN_ADD_FAILED 0x08#define ISCSI_LOGIN_STATUS_NO_SESSION_TYPE 0x09#define ISCSI_LOGIN_STATUS_NO_SESSION 0x0a#define ISCSI_LOGIN_STATUS_INVALID_REQUEST 0x0b/* Class-3 (Target Error) */#define ISCSI_LOGIN_STATUS_TARGET_ERROR 0x00#define ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE 0x01#define ISCSI_LOGIN_STATUS_NO_RESOURCES 0x02/* Logout Header */struct IscsiLogoutHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 fbit:1, reason:7;#else UINT8 reason:7, fbit:1;#endif UINT8 rsvd1[2]; UINT8 hlength; UINT8 dlength[3]; UINT8 rsvd2[8]; UINT32 itt; /* Initiator Task Tag */ UINT16 cid; UINT8 rsvd3[2]; UINT32 cmdsn; UINT32 expstatsn; UINT8 rsvd4[16];};/* logout reason_code values */#define ISCSI_LOGOUT_REASON_CLOSE_SESSION 0#define ISCSI_LOGOUT_REASON_CLOSE_CONNECTION 1#define ISCSI_LOGOUT_REASON_RECOVERY 2#define ISCSI_LOGOUT_REASON_AEN_REQUEST 3/* Logout Response Header */struct IscsiLogoutRspHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 fbit:1, rsvd1:7;#else UINT8 rsvd1:7, fbit:1;#endif UINT8 response; /* see Logout response values below */ UINT8 rsvd2; UINT8 hlength; UINT8 dlength[3]; UINT8 rsvd3[8]; UINT32 itt; /* Initiator Task Tag */ UINT32 rsvd4; UINT32 statsn; UINT32 expcmdsn; UINT32 maxcmdsn; UINT32 rsvd5; UINT16 t2wait; UINT16 t2retain; UINT32 rsvd6;};/* logout response status values */#define ISCSI_LOGOUT_SUCCESS 0#define ISCSI_LOGOUT_CID_NOT_FOUND 1#define ISCSI_LOGOUT_RECOVERY_UNSUPPORTED 2#define ISCSI_LOGOUT_CLEANUP_FAILED 3/* SNACK Header */struct IscsiSNACKHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 fbit:1, rsvd1:3, type:4;#else UINT8 type:4, rsvd1:3, fbit:1;#endif UINT8 rsvd2[14]; UINT32 itt; UINT32 begrun; UINT32 runlength; UINT32 expstatsn; UINT32 rsvd3; UINT32 expdatasn; UINT8 rsvd6[8];};/* Reject Message Header */struct IscsiRejectRspHdr { UINT8 opcode;#ifdef ISCSI_BIG_ENDIAN_BITFIELD UINT8 fbit:1, rsvd1:7;#else UINT8 rsvd1:7, fbit:1;#endif UINT8 reason; UINT8 rsvd2; UINT8 rsvd3; UINT8 dlength[3]; UINT8 rsvd4[16]; UINT32 statsn; UINT32 expcmdsn; UINT32 maxcmdsn; UINT32 datasn; UINT8 rsvd5[8]; /* Text - Rejected hdr */};/* Reason for Reject */#define CMD_BEFORE_LOGIN 1#define DATA_DIGEST_ERROR 2#define DATA_SNACK_REJECT 3#define ISCSI_PROTOCOL_ERROR 4#define CMD_NOT_SUPPORTED 5#define IMM_CMD_REJECT 6#define TASK_IN_PROGRESS 7#define INVALID_SNACK 8#define BOOKMARK_REJECTED 9#define BOOKMARK_NO_RESOURCES 10#define NEGOTIATION_RESET 11#ifdef __cplusplus}#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -