658 lines · c
1/* SPDX-License-Identifier: GPL-2.0-or-later */2/*3 * RFC 3720 (iSCSI) protocol data types4 *5 * Copyright (C) 2005 Dmitry Yusupov6 * Copyright (C) 2005 Alex Aizman7 * maintained by open-iscsi@googlegroups.com8 */9 10#ifndef ISCSI_PROTO_H11#define ISCSI_PROTO_H12 13#include <linux/types.h>14#include <scsi/scsi.h>15 16#define ISCSI_DRAFT20_VERSION 0x0017 18/* default iSCSI listen port for incoming connections */19#define ISCSI_LISTEN_PORT 326020 21/* iSCSI header length */22#define ISCSI_HDR_LEN 4823 24/* iSCSI CRC32C length */25#define ISCSI_CRC_LEN 426 27/* Padding word length */28#define ISCSI_PAD_LEN 429 30/*31 * Serial Number Arithmetic, 32 bits, RFC198232 */33 34static inline int iscsi_sna_lt(u32 n1, u32 n2)35{36 return (s32)(n1 - n2) < 0;37}38 39static inline int iscsi_sna_lte(u32 n1, u32 n2)40{41 return (s32)(n1 - n2) <= 0;42}43 44static inline int iscsi_sna_gt(u32 n1, u32 n2)45{46 return (s32)(n1 - n2) > 0;47}48 49static inline int iscsi_sna_gte(u32 n1, u32 n2)50{51 return (s32)(n1 - n2) >= 0;52}53 54/*55 * useful common(control and data paths) macro56 */57#define ntoh24(p) (((p)[0] << 16) | ((p)[1] << 8) | ((p)[2]))58#define hton24(p, v) { \59 p[0] = (((v) >> 16) & 0xFF); \60 p[1] = (((v) >> 8) & 0xFF); \61 p[2] = ((v) & 0xFF); \62}63#define zero_data(p) {p[0]=0;p[1]=0;p[2]=0;}64 65/* initiator tags; opaque for target */66typedef uint32_t __bitwise itt_t;67/* below makes sense only for initiator that created this tag */68#define build_itt(itt, age) ((__force itt_t)\69 ((itt) | ((age) << ISCSI_AGE_SHIFT)))70#define get_itt(itt) ((__force uint32_t)(itt_t)(itt) & ISCSI_ITT_MASK)71#define RESERVED_ITT ((__force itt_t)0xffffffff)72 73/*74 * iSCSI Template Message Header75 */76struct iscsi_hdr {77 uint8_t opcode;78 uint8_t flags; /* Final bit */79 uint8_t rsvd2[2];80 uint8_t hlength; /* AHSs total length */81 uint8_t dlength[3]; /* Data length */82 struct scsi_lun lun;83 itt_t itt; /* Initiator Task Tag, opaque for target */84 __be32 ttt; /* Target Task Tag */85 __be32 statsn;86 __be32 exp_statsn;87 __be32 max_statsn;88 uint8_t other[12];89};90 91/************************* RFC 3720 Begin *****************************/92 93#define ISCSI_RESERVED_TAG 0xffffffff94 95/* Opcode encoding bits */96#define ISCSI_OP_RETRY 0x8097#define ISCSI_OP_IMMEDIATE 0x4098#define ISCSI_OPCODE_MASK 0x3F99 100/* Initiator Opcode values */101#define ISCSI_OP_NOOP_OUT 0x00102#define ISCSI_OP_SCSI_CMD 0x01103#define ISCSI_OP_SCSI_TMFUNC 0x02104#define ISCSI_OP_LOGIN 0x03105#define ISCSI_OP_TEXT 0x04106#define ISCSI_OP_SCSI_DATA_OUT 0x05107#define ISCSI_OP_LOGOUT 0x06108#define ISCSI_OP_SNACK 0x10109 110#define ISCSI_OP_VENDOR1_CMD 0x1c111#define ISCSI_OP_VENDOR2_CMD 0x1d112#define ISCSI_OP_VENDOR3_CMD 0x1e113#define ISCSI_OP_VENDOR4_CMD 0x1f114 115/* Target Opcode values */116#define ISCSI_OP_NOOP_IN 0x20117#define ISCSI_OP_SCSI_CMD_RSP 0x21118#define ISCSI_OP_SCSI_TMFUNC_RSP 0x22119#define ISCSI_OP_LOGIN_RSP 0x23120#define ISCSI_OP_TEXT_RSP 0x24121#define ISCSI_OP_SCSI_DATA_IN 0x25122#define ISCSI_OP_LOGOUT_RSP 0x26123#define ISCSI_OP_R2T 0x31124#define ISCSI_OP_ASYNC_EVENT 0x32125#define ISCSI_OP_REJECT 0x3f126 127struct iscsi_ahs_hdr {128 __be16 ahslength;129 uint8_t ahstype;130 uint8_t ahspec[5];131};132 133#define ISCSI_AHSTYPE_CDB 1134#define ISCSI_AHSTYPE_RLENGTH 2135#define ISCSI_CDB_SIZE 16136 137/* iSCSI PDU Header */138struct iscsi_scsi_req {139 uint8_t opcode;140 uint8_t flags;141 __be16 rsvd2;142 uint8_t hlength;143 uint8_t dlength[3];144 struct scsi_lun lun;145 itt_t itt; /* Initiator Task Tag */146 __be32 data_length;147 __be32 cmdsn;148 __be32 exp_statsn;149 uint8_t cdb[ISCSI_CDB_SIZE]; /* SCSI Command Block */150 /* Additional Data (Command Dependent) */151};152 153/* Command PDU flags */154#define ISCSI_FLAG_CMD_FINAL 0x80155#define ISCSI_FLAG_CMD_READ 0x40156#define ISCSI_FLAG_CMD_WRITE 0x20157#define ISCSI_FLAG_CMD_ATTR_MASK 0x07 /* 3 bits */158 159/* SCSI Command Attribute values */160#define ISCSI_ATTR_UNTAGGED 0161#define ISCSI_ATTR_SIMPLE 1162#define ISCSI_ATTR_ORDERED 2163#define ISCSI_ATTR_HEAD_OF_QUEUE 3164#define ISCSI_ATTR_ACA 4165 166struct iscsi_rlength_ahdr {167 __be16 ahslength;168 uint8_t ahstype;169 uint8_t reserved;170 __be32 read_length;171};172 173/* Extended CDB AHS */174struct iscsi_ecdb_ahdr {175 __be16 ahslength; /* CDB length - 15, including reserved byte */176 uint8_t ahstype;177 uint8_t reserved;178 /* 4-byte aligned extended CDB spillover */179 uint8_t ecdb[SCSI_MAX_VARLEN_CDB_SIZE - ISCSI_CDB_SIZE];180};181 182/* SCSI Response Header */183struct iscsi_scsi_rsp {184 uint8_t opcode;185 uint8_t flags;186 uint8_t response;187 uint8_t cmd_status;188 uint8_t hlength;189 uint8_t dlength[3];190 uint8_t rsvd[8];191 itt_t itt; /* Initiator Task Tag */192 __be32 rsvd1;193 __be32 statsn;194 __be32 exp_cmdsn;195 __be32 max_cmdsn;196 __be32 exp_datasn;197 __be32 bi_residual_count;198 __be32 residual_count;199 /* Response or Sense Data (optional) */200};201 202/* Command Response PDU flags */203#define ISCSI_FLAG_CMD_BIDI_OVERFLOW 0x10204#define ISCSI_FLAG_CMD_BIDI_UNDERFLOW 0x08205#define ISCSI_FLAG_CMD_OVERFLOW 0x04206#define ISCSI_FLAG_CMD_UNDERFLOW 0x02207 208/* iSCSI Status values. Valid if Rsp Selector bit is not set */209#define ISCSI_STATUS_CMD_COMPLETED 0210#define ISCSI_STATUS_TARGET_FAILURE 1211#define ISCSI_STATUS_SUBSYS_FAILURE 2212 213/* Asynchronous Event Header */214struct iscsi_async {215 uint8_t opcode;216 uint8_t flags;217 uint8_t rsvd2[2];218 uint8_t rsvd3;219 uint8_t dlength[3];220 struct scsi_lun lun;221 uint8_t rsvd4[8];222 __be32 statsn;223 __be32 exp_cmdsn;224 __be32 max_cmdsn;225 uint8_t async_event;226 uint8_t async_vcode;227 __be16 param1;228 __be16 param2;229 __be16 param3;230 uint8_t rsvd5[4];231};232 233/* iSCSI Event Codes */234#define ISCSI_ASYNC_MSG_SCSI_EVENT 0235#define ISCSI_ASYNC_MSG_REQUEST_LOGOUT 1236#define ISCSI_ASYNC_MSG_DROPPING_CONNECTION 2237#define ISCSI_ASYNC_MSG_DROPPING_ALL_CONNECTIONS 3238#define ISCSI_ASYNC_MSG_PARAM_NEGOTIATION 4239#define ISCSI_ASYNC_MSG_VENDOR_SPECIFIC 255240 241/* NOP-Out Message */242struct iscsi_nopout {243 uint8_t opcode;244 uint8_t flags;245 __be16 rsvd2;246 uint8_t rsvd3;247 uint8_t dlength[3];248 struct scsi_lun lun;249 itt_t itt; /* Initiator Task Tag */250 __be32 ttt; /* Target Transfer Tag */251 __be32 cmdsn;252 __be32 exp_statsn;253 uint8_t rsvd4[16];254};255 256/* NOP-In Message */257struct iscsi_nopin {258 uint8_t opcode;259 uint8_t flags;260 __be16 rsvd2;261 uint8_t rsvd3;262 uint8_t dlength[3];263 struct scsi_lun lun;264 itt_t itt; /* Initiator Task Tag */265 __be32 ttt; /* Target Transfer Tag */266 __be32 statsn;267 __be32 exp_cmdsn;268 __be32 max_cmdsn;269 uint8_t rsvd4[12];270};271 272/* SCSI Task Management Message Header */273struct iscsi_tm {274 uint8_t opcode;275 uint8_t flags;276 uint8_t rsvd1[2];277 uint8_t hlength;278 uint8_t dlength[3];279 struct scsi_lun lun;280 itt_t itt; /* Initiator Task Tag */281 itt_t rtt; /* Reference Task Tag */282 __be32 cmdsn;283 __be32 exp_statsn;284 __be32 refcmdsn;285 __be32 exp_datasn;286 uint8_t rsvd2[8];287};288 289#define ISCSI_FLAG_TM_FUNC_MASK 0x7F290 291/* Function values */292#define ISCSI_TM_FUNC_ABORT_TASK 1293#define ISCSI_TM_FUNC_ABORT_TASK_SET 2294#define ISCSI_TM_FUNC_CLEAR_ACA 3295#define ISCSI_TM_FUNC_CLEAR_TASK_SET 4296#define ISCSI_TM_FUNC_LOGICAL_UNIT_RESET 5297#define ISCSI_TM_FUNC_TARGET_WARM_RESET 6298#define ISCSI_TM_FUNC_TARGET_COLD_RESET 7299#define ISCSI_TM_FUNC_TASK_REASSIGN 8300 301#define ISCSI_TM_FUNC_VALUE(hdr) ((hdr)->flags & ISCSI_FLAG_TM_FUNC_MASK)302 303/* SCSI Task Management Response Header */304struct iscsi_tm_rsp {305 uint8_t opcode;306 uint8_t flags;307 uint8_t response; /* see Response values below */308 uint8_t qualifier;309 uint8_t hlength;310 uint8_t dlength[3];311 uint8_t rsvd2[8];312 itt_t itt; /* Initiator Task Tag */313 itt_t rtt; /* Reference Task Tag */314 __be32 statsn;315 __be32 exp_cmdsn;316 __be32 max_cmdsn;317 uint8_t rsvd3[12];318};319 320/* Response values */321#define ISCSI_TMF_RSP_COMPLETE 0x00322#define ISCSI_TMF_RSP_NO_TASK 0x01323#define ISCSI_TMF_RSP_NO_LUN 0x02324#define ISCSI_TMF_RSP_TASK_ALLEGIANT 0x03325#define ISCSI_TMF_RSP_NO_FAILOVER 0x04326#define ISCSI_TMF_RSP_NOT_SUPPORTED 0x05327#define ISCSI_TMF_RSP_AUTH_FAILED 0x06328#define ISCSI_TMF_RSP_REJECTED 0xff329 330/* Ready To Transfer Header */331struct iscsi_r2t_rsp {332 uint8_t opcode;333 uint8_t flags;334 uint8_t rsvd2[2];335 uint8_t hlength;336 uint8_t dlength[3];337 struct scsi_lun lun;338 itt_t itt; /* Initiator Task Tag */339 __be32 ttt; /* Target Transfer Tag */340 __be32 statsn;341 __be32 exp_cmdsn;342 __be32 max_cmdsn;343 __be32 r2tsn;344 __be32 data_offset;345 __be32 data_length;346};347 348/* SCSI Data Hdr */349struct iscsi_data {350 uint8_t opcode;351 uint8_t flags;352 uint8_t rsvd2[2];353 uint8_t rsvd3;354 uint8_t dlength[3];355 struct scsi_lun lun;356 itt_t itt;357 __be32 ttt;358 __be32 rsvd4;359 __be32 exp_statsn;360 __be32 rsvd5;361 __be32 datasn;362 __be32 offset;363 __be32 rsvd6;364 /* Payload */365};366 367/* SCSI Data Response Hdr */368struct iscsi_data_rsp {369 uint8_t opcode;370 uint8_t flags;371 uint8_t rsvd2;372 uint8_t cmd_status;373 uint8_t hlength;374 uint8_t dlength[3];375 struct scsi_lun lun;376 itt_t itt;377 __be32 ttt;378 __be32 statsn;379 __be32 exp_cmdsn;380 __be32 max_cmdsn;381 __be32 datasn;382 __be32 offset;383 __be32 residual_count;384};385 386/* Data Response PDU flags */387#define ISCSI_FLAG_DATA_ACK 0x40388#define ISCSI_FLAG_DATA_OVERFLOW 0x04389#define ISCSI_FLAG_DATA_UNDERFLOW 0x02390#define ISCSI_FLAG_DATA_STATUS 0x01391 392/* Text Header */393struct iscsi_text {394 uint8_t opcode;395 uint8_t flags;396 uint8_t rsvd2[2];397 uint8_t hlength;398 uint8_t dlength[3];399 uint8_t rsvd4[8];400 itt_t itt;401 __be32 ttt;402 __be32 cmdsn;403 __be32 exp_statsn;404 uint8_t rsvd5[16];405 /* Text - key=value pairs */406};407 408#define ISCSI_FLAG_TEXT_CONTINUE 0x40409 410/* Text Response Header */411struct iscsi_text_rsp {412 uint8_t opcode;413 uint8_t flags;414 uint8_t rsvd2[2];415 uint8_t hlength;416 uint8_t dlength[3];417 uint8_t rsvd4[8];418 itt_t itt;419 __be32 ttt;420 __be32 statsn;421 __be32 exp_cmdsn;422 __be32 max_cmdsn;423 uint8_t rsvd5[12];424 /* Text Response - key:value pairs */425};426 427/* Login Header */428struct iscsi_login_req {429 uint8_t opcode;430 uint8_t flags;431 uint8_t max_version; /* Max. version supported */432 uint8_t min_version; /* Min. version supported */433 uint8_t hlength;434 uint8_t dlength[3];435 uint8_t isid[6]; /* Initiator Session ID */436 __be16 tsih; /* Target Session Handle */437 itt_t itt; /* Initiator Task Tag */438 __be16 cid;439 __be16 rsvd3;440 __be32 cmdsn;441 __be32 exp_statsn;442 uint8_t rsvd5[16];443};444 445/* Login PDU flags */446#define ISCSI_FLAG_LOGIN_TRANSIT 0x80447#define ISCSI_FLAG_LOGIN_CONTINUE 0x40448#define ISCSI_FLAG_LOGIN_CURRENT_STAGE_MASK 0x0C /* 2 bits */449#define ISCSI_FLAG_LOGIN_CURRENT_STAGE1 0x04450#define ISCSI_FLAG_LOGIN_CURRENT_STAGE2 0x08451#define ISCSI_FLAG_LOGIN_CURRENT_STAGE3 0x0C452#define ISCSI_FLAG_LOGIN_NEXT_STAGE_MASK 0x03 /* 2 bits */453#define ISCSI_FLAG_LOGIN_NEXT_STAGE1 0x01454#define ISCSI_FLAG_LOGIN_NEXT_STAGE2 0x02455#define ISCSI_FLAG_LOGIN_NEXT_STAGE3 0x03456 457#define ISCSI_LOGIN_CURRENT_STAGE(flags) \458 ((flags & ISCSI_FLAG_LOGIN_CURRENT_STAGE_MASK) >> 2)459#define ISCSI_LOGIN_NEXT_STAGE(flags) \460 (flags & ISCSI_FLAG_LOGIN_NEXT_STAGE_MASK)461 462/* Login Response Header */463struct iscsi_login_rsp {464 uint8_t opcode;465 uint8_t flags;466 uint8_t max_version; /* Max. version supported */467 uint8_t active_version; /* Active version */468 uint8_t hlength;469 uint8_t dlength[3];470 uint8_t isid[6]; /* Initiator Session ID */471 __be16 tsih; /* Target Session Handle */472 itt_t itt; /* Initiator Task Tag */473 __be32 rsvd3;474 __be32 statsn;475 __be32 exp_cmdsn;476 __be32 max_cmdsn;477 uint8_t status_class; /* see Login RSP ststus classes below */478 uint8_t status_detail; /* see Login RSP Status details below */479 uint8_t rsvd4[10];480};481 482/* Login stage (phase) codes for CSG, NSG */483#define ISCSI_INITIAL_LOGIN_STAGE -1484#define ISCSI_SECURITY_NEGOTIATION_STAGE 0485#define ISCSI_OP_PARMS_NEGOTIATION_STAGE 1486#define ISCSI_FULL_FEATURE_PHASE 3487 488/* Login Status response classes */489#define ISCSI_STATUS_CLS_SUCCESS 0x00490#define ISCSI_STATUS_CLS_REDIRECT 0x01491#define ISCSI_STATUS_CLS_INITIATOR_ERR 0x02492#define ISCSI_STATUS_CLS_TARGET_ERR 0x03493 494/* Login Status response detail codes */495/* Class-0 (Success) */496#define ISCSI_LOGIN_STATUS_ACCEPT 0x00497 498/* Class-1 (Redirection) */499#define ISCSI_LOGIN_STATUS_TGT_MOVED_TEMP 0x01500#define ISCSI_LOGIN_STATUS_TGT_MOVED_PERM 0x02501 502/* Class-2 (Initiator Error) */503#define ISCSI_LOGIN_STATUS_INIT_ERR 0x00504#define ISCSI_LOGIN_STATUS_AUTH_FAILED 0x01505#define ISCSI_LOGIN_STATUS_TGT_FORBIDDEN 0x02506#define ISCSI_LOGIN_STATUS_TGT_NOT_FOUND 0x03507#define ISCSI_LOGIN_STATUS_TGT_REMOVED 0x04508#define ISCSI_LOGIN_STATUS_NO_VERSION 0x05509#define ISCSI_LOGIN_STATUS_ISID_ERROR 0x06510#define ISCSI_LOGIN_STATUS_MISSING_FIELDS 0x07511#define ISCSI_LOGIN_STATUS_CONN_ADD_FAILED 0x08512#define ISCSI_LOGIN_STATUS_NO_SESSION_TYPE 0x09513#define ISCSI_LOGIN_STATUS_NO_SESSION 0x0a514#define ISCSI_LOGIN_STATUS_INVALID_REQUEST 0x0b515 516/* Class-3 (Target Error) */517#define ISCSI_LOGIN_STATUS_TARGET_ERROR 0x00518#define ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE 0x01519#define ISCSI_LOGIN_STATUS_NO_RESOURCES 0x02520 521/* Logout Header */522struct iscsi_logout {523 uint8_t opcode;524 uint8_t flags;525 uint8_t rsvd1[2];526 uint8_t hlength;527 uint8_t dlength[3];528 uint8_t rsvd2[8];529 itt_t itt; /* Initiator Task Tag */530 __be16 cid;531 uint8_t rsvd3[2];532 __be32 cmdsn;533 __be32 exp_statsn;534 uint8_t rsvd4[16];535};536 537/* Logout PDU flags */538#define ISCSI_FLAG_LOGOUT_REASON_MASK 0x7F539 540/* logout reason_code values */541 542#define ISCSI_LOGOUT_REASON_CLOSE_SESSION 0543#define ISCSI_LOGOUT_REASON_CLOSE_CONNECTION 1544#define ISCSI_LOGOUT_REASON_RECOVERY 2545#define ISCSI_LOGOUT_REASON_AEN_REQUEST 3546 547/* Logout Response Header */548struct iscsi_logout_rsp {549 uint8_t opcode;550 uint8_t flags;551 uint8_t response; /* see Logout response values below */552 uint8_t rsvd2;553 uint8_t hlength;554 uint8_t dlength[3];555 uint8_t rsvd3[8];556 itt_t itt; /* Initiator Task Tag */557 __be32 rsvd4;558 __be32 statsn;559 __be32 exp_cmdsn;560 __be32 max_cmdsn;561 __be32 rsvd5;562 __be16 t2wait;563 __be16 t2retain;564 __be32 rsvd6;565};566 567/* logout response status values */568 569#define ISCSI_LOGOUT_SUCCESS 0570#define ISCSI_LOGOUT_CID_NOT_FOUND 1571#define ISCSI_LOGOUT_RECOVERY_UNSUPPORTED 2572#define ISCSI_LOGOUT_CLEANUP_FAILED 3573 574/* SNACK Header */575struct iscsi_snack {576 uint8_t opcode;577 uint8_t flags;578 uint8_t rsvd2[2];579 uint8_t hlength;580 uint8_t dlength[3];581 uint8_t lun[8];582 itt_t itt;583 __be32 ttt;584 uint8_t rsvd3[4];585 __be32 exp_statsn;586 uint8_t rsvd4[8];587 __be32 begrun;588 __be32 runlength;589};590 591/* SNACK PDU flags */592#define ISCSI_FLAG_SNACK_TYPE_DATA 0593#define ISCSI_FLAG_SNACK_TYPE_R2T 0594#define ISCSI_FLAG_SNACK_TYPE_STATUS 1595#define ISCSI_FLAG_SNACK_TYPE_DATA_ACK 2596#define ISCSI_FLAG_SNACK_TYPE_RDATA 3597#define ISCSI_FLAG_SNACK_TYPE_MASK 0x0F /* 4 bits */598 599/* Reject Message Header */600struct iscsi_reject {601 uint8_t opcode;602 uint8_t flags;603 uint8_t reason;604 uint8_t rsvd2;605 uint8_t hlength;606 uint8_t dlength[3];607 uint8_t rsvd3[8];608 __be32 ffffffff;609 uint8_t rsvd4[4];610 __be32 statsn;611 __be32 exp_cmdsn;612 __be32 max_cmdsn;613 __be32 datasn;614 uint8_t rsvd5[8];615 /* Text - Rejected hdr */616};617 618/* Reason for Reject */619#define ISCSI_REASON_CMD_BEFORE_LOGIN 1620#define ISCSI_REASON_DATA_DIGEST_ERROR 2621#define ISCSI_REASON_DATA_SNACK_REJECT 3622#define ISCSI_REASON_PROTOCOL_ERROR 4623#define ISCSI_REASON_CMD_NOT_SUPPORTED 5624#define ISCSI_REASON_IMM_CMD_REJECT 6625#define ISCSI_REASON_TASK_IN_PROGRESS 7626#define ISCSI_REASON_INVALID_SNACK 8627#define ISCSI_REASON_BOOKMARK_INVALID 9628#define ISCSI_REASON_BOOKMARK_NO_RESOURCES 10629#define ISCSI_REASON_NEGOTIATION_RESET 11630 631/* Max. number of Key=Value pairs in a text message */632#define MAX_KEY_VALUE_PAIRS 8192633 634/* maximum length for text keys/values */635#define KEY_MAXLEN 64636#define VALUE_MAXLEN 255637#define TARGET_NAME_MAXLEN VALUE_MAXLEN638 639#define ISCSI_DEF_MAX_RECV_SEG_LEN 8192640#define ISCSI_MIN_MAX_RECV_SEG_LEN 512641#define ISCSI_MAX_MAX_RECV_SEG_LEN 16777215642 643#define ISCSI_DEF_FIRST_BURST_LEN 65536644#define ISCSI_MIN_FIRST_BURST_LEN 512645#define ISCSI_MAX_FIRST_BURST_LEN 16777215646 647#define ISCSI_DEF_MAX_BURST_LEN 262144648#define ISCSI_MIN_MAX_BURST_LEN 512649#define ISCSI_MAX_MAX_BURST_LEN 16777215650 651#define ISCSI_DEF_TIME2WAIT 2652 653#define ISCSI_NAME_LEN 224654 655/************************* RFC 3720 End *****************************/656 657#endif /* ISCSI_PROTO_H */658