0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #ifndef ISCSI_PROTO_H
0011 #define ISCSI_PROTO_H
0012
0013 #include <linux/types.h>
0014 #include <scsi/scsi.h>
0015
0016 #define ISCSI_DRAFT20_VERSION 0x00
0017
0018
0019 #define ISCSI_LISTEN_PORT 3260
0020
0021
0022 #define ISCSI_HDR_LEN 48
0023
0024
0025 #define ISCSI_CRC_LEN 4
0026
0027
0028 #define ISCSI_PAD_LEN 4
0029
0030
0031
0032
0033
0034 static inline int iscsi_sna_lt(u32 n1, u32 n2)
0035 {
0036 return (s32)(n1 - n2) < 0;
0037 }
0038
0039 static inline int iscsi_sna_lte(u32 n1, u32 n2)
0040 {
0041 return (s32)(n1 - n2) <= 0;
0042 }
0043
0044 static inline int iscsi_sna_gt(u32 n1, u32 n2)
0045 {
0046 return (s32)(n1 - n2) > 0;
0047 }
0048
0049 static inline int iscsi_sna_gte(u32 n1, u32 n2)
0050 {
0051 return (s32)(n1 - n2) >= 0;
0052 }
0053
0054
0055
0056
0057 #define ntoh24(p) (((p)[0] << 16) | ((p)[1] << 8) | ((p)[2]))
0058 #define hton24(p, v) { \
0059 p[0] = (((v) >> 16) & 0xFF); \
0060 p[1] = (((v) >> 8) & 0xFF); \
0061 p[2] = ((v) & 0xFF); \
0062 }
0063 #define zero_data(p) {p[0]=0;p[1]=0;p[2]=0;}
0064
0065
0066 typedef uint32_t __bitwise itt_t;
0067
0068 #define build_itt(itt, age) ((__force itt_t)\
0069 ((itt) | ((age) << ISCSI_AGE_SHIFT)))
0070 #define get_itt(itt) ((__force uint32_t)(itt_t)(itt) & ISCSI_ITT_MASK)
0071 #define RESERVED_ITT ((__force itt_t)0xffffffff)
0072
0073
0074
0075
0076 struct iscsi_hdr {
0077 uint8_t opcode;
0078 uint8_t flags;
0079 uint8_t rsvd2[2];
0080 uint8_t hlength;
0081 uint8_t dlength[3];
0082 struct scsi_lun lun;
0083 itt_t itt;
0084 __be32 ttt;
0085 __be32 statsn;
0086 __be32 exp_statsn;
0087 __be32 max_statsn;
0088 uint8_t other[12];
0089 };
0090
0091
0092
0093 #define ISCSI_RESERVED_TAG 0xffffffff
0094
0095
0096 #define ISCSI_OP_RETRY 0x80
0097 #define ISCSI_OP_IMMEDIATE 0x40
0098 #define ISCSI_OPCODE_MASK 0x3F
0099
0100
0101 #define ISCSI_OP_NOOP_OUT 0x00
0102 #define ISCSI_OP_SCSI_CMD 0x01
0103 #define ISCSI_OP_SCSI_TMFUNC 0x02
0104 #define ISCSI_OP_LOGIN 0x03
0105 #define ISCSI_OP_TEXT 0x04
0106 #define ISCSI_OP_SCSI_DATA_OUT 0x05
0107 #define ISCSI_OP_LOGOUT 0x06
0108 #define ISCSI_OP_SNACK 0x10
0109
0110 #define ISCSI_OP_VENDOR1_CMD 0x1c
0111 #define ISCSI_OP_VENDOR2_CMD 0x1d
0112 #define ISCSI_OP_VENDOR3_CMD 0x1e
0113 #define ISCSI_OP_VENDOR4_CMD 0x1f
0114
0115
0116 #define ISCSI_OP_NOOP_IN 0x20
0117 #define ISCSI_OP_SCSI_CMD_RSP 0x21
0118 #define ISCSI_OP_SCSI_TMFUNC_RSP 0x22
0119 #define ISCSI_OP_LOGIN_RSP 0x23
0120 #define ISCSI_OP_TEXT_RSP 0x24
0121 #define ISCSI_OP_SCSI_DATA_IN 0x25
0122 #define ISCSI_OP_LOGOUT_RSP 0x26
0123 #define ISCSI_OP_R2T 0x31
0124 #define ISCSI_OP_ASYNC_EVENT 0x32
0125 #define ISCSI_OP_REJECT 0x3f
0126
0127 struct iscsi_ahs_hdr {
0128 __be16 ahslength;
0129 uint8_t ahstype;
0130 uint8_t ahspec[5];
0131 };
0132
0133 #define ISCSI_AHSTYPE_CDB 1
0134 #define ISCSI_AHSTYPE_RLENGTH 2
0135 #define ISCSI_CDB_SIZE 16
0136
0137
0138 struct iscsi_scsi_req {
0139 uint8_t opcode;
0140 uint8_t flags;
0141 __be16 rsvd2;
0142 uint8_t hlength;
0143 uint8_t dlength[3];
0144 struct scsi_lun lun;
0145 itt_t itt;
0146 __be32 data_length;
0147 __be32 cmdsn;
0148 __be32 exp_statsn;
0149 uint8_t cdb[ISCSI_CDB_SIZE];
0150
0151 };
0152
0153
0154 #define ISCSI_FLAG_CMD_FINAL 0x80
0155 #define ISCSI_FLAG_CMD_READ 0x40
0156 #define ISCSI_FLAG_CMD_WRITE 0x20
0157 #define ISCSI_FLAG_CMD_ATTR_MASK 0x07
0158
0159
0160 #define ISCSI_ATTR_UNTAGGED 0
0161 #define ISCSI_ATTR_SIMPLE 1
0162 #define ISCSI_ATTR_ORDERED 2
0163 #define ISCSI_ATTR_HEAD_OF_QUEUE 3
0164 #define ISCSI_ATTR_ACA 4
0165
0166 struct iscsi_rlength_ahdr {
0167 __be16 ahslength;
0168 uint8_t ahstype;
0169 uint8_t reserved;
0170 __be32 read_length;
0171 };
0172
0173
0174 struct iscsi_ecdb_ahdr {
0175 __be16 ahslength;
0176 uint8_t ahstype;
0177 uint8_t reserved;
0178
0179 uint8_t ecdb[SCSI_MAX_VARLEN_CDB_SIZE - ISCSI_CDB_SIZE];
0180 };
0181
0182
0183 struct iscsi_scsi_rsp {
0184 uint8_t opcode;
0185 uint8_t flags;
0186 uint8_t response;
0187 uint8_t cmd_status;
0188 uint8_t hlength;
0189 uint8_t dlength[3];
0190 uint8_t rsvd[8];
0191 itt_t itt;
0192 __be32 rsvd1;
0193 __be32 statsn;
0194 __be32 exp_cmdsn;
0195 __be32 max_cmdsn;
0196 __be32 exp_datasn;
0197 __be32 bi_residual_count;
0198 __be32 residual_count;
0199
0200 };
0201
0202
0203 #define ISCSI_FLAG_CMD_BIDI_OVERFLOW 0x10
0204 #define ISCSI_FLAG_CMD_BIDI_UNDERFLOW 0x08
0205 #define ISCSI_FLAG_CMD_OVERFLOW 0x04
0206 #define ISCSI_FLAG_CMD_UNDERFLOW 0x02
0207
0208
0209 #define ISCSI_STATUS_CMD_COMPLETED 0
0210 #define ISCSI_STATUS_TARGET_FAILURE 1
0211 #define ISCSI_STATUS_SUBSYS_FAILURE 2
0212
0213
0214 struct iscsi_async {
0215 uint8_t opcode;
0216 uint8_t flags;
0217 uint8_t rsvd2[2];
0218 uint8_t rsvd3;
0219 uint8_t dlength[3];
0220 struct scsi_lun lun;
0221 uint8_t rsvd4[8];
0222 __be32 statsn;
0223 __be32 exp_cmdsn;
0224 __be32 max_cmdsn;
0225 uint8_t async_event;
0226 uint8_t async_vcode;
0227 __be16 param1;
0228 __be16 param2;
0229 __be16 param3;
0230 uint8_t rsvd5[4];
0231 };
0232
0233
0234 #define ISCSI_ASYNC_MSG_SCSI_EVENT 0
0235 #define ISCSI_ASYNC_MSG_REQUEST_LOGOUT 1
0236 #define ISCSI_ASYNC_MSG_DROPPING_CONNECTION 2
0237 #define ISCSI_ASYNC_MSG_DROPPING_ALL_CONNECTIONS 3
0238 #define ISCSI_ASYNC_MSG_PARAM_NEGOTIATION 4
0239 #define ISCSI_ASYNC_MSG_VENDOR_SPECIFIC 255
0240
0241
0242 struct iscsi_nopout {
0243 uint8_t opcode;
0244 uint8_t flags;
0245 __be16 rsvd2;
0246 uint8_t rsvd3;
0247 uint8_t dlength[3];
0248 struct scsi_lun lun;
0249 itt_t itt;
0250 __be32 ttt;
0251 __be32 cmdsn;
0252 __be32 exp_statsn;
0253 uint8_t rsvd4[16];
0254 };
0255
0256
0257 struct iscsi_nopin {
0258 uint8_t opcode;
0259 uint8_t flags;
0260 __be16 rsvd2;
0261 uint8_t rsvd3;
0262 uint8_t dlength[3];
0263 struct scsi_lun lun;
0264 itt_t itt;
0265 __be32 ttt;
0266 __be32 statsn;
0267 __be32 exp_cmdsn;
0268 __be32 max_cmdsn;
0269 uint8_t rsvd4[12];
0270 };
0271
0272
0273 struct iscsi_tm {
0274 uint8_t opcode;
0275 uint8_t flags;
0276 uint8_t rsvd1[2];
0277 uint8_t hlength;
0278 uint8_t dlength[3];
0279 struct scsi_lun lun;
0280 itt_t itt;
0281 itt_t rtt;
0282 __be32 cmdsn;
0283 __be32 exp_statsn;
0284 __be32 refcmdsn;
0285 __be32 exp_datasn;
0286 uint8_t rsvd2[8];
0287 };
0288
0289 #define ISCSI_FLAG_TM_FUNC_MASK 0x7F
0290
0291
0292 #define ISCSI_TM_FUNC_ABORT_TASK 1
0293 #define ISCSI_TM_FUNC_ABORT_TASK_SET 2
0294 #define ISCSI_TM_FUNC_CLEAR_ACA 3
0295 #define ISCSI_TM_FUNC_CLEAR_TASK_SET 4
0296 #define ISCSI_TM_FUNC_LOGICAL_UNIT_RESET 5
0297 #define ISCSI_TM_FUNC_TARGET_WARM_RESET 6
0298 #define ISCSI_TM_FUNC_TARGET_COLD_RESET 7
0299 #define ISCSI_TM_FUNC_TASK_REASSIGN 8
0300
0301 #define ISCSI_TM_FUNC_VALUE(hdr) ((hdr)->flags & ISCSI_FLAG_TM_FUNC_MASK)
0302
0303
0304 struct iscsi_tm_rsp {
0305 uint8_t opcode;
0306 uint8_t flags;
0307 uint8_t response;
0308 uint8_t qualifier;
0309 uint8_t hlength;
0310 uint8_t dlength[3];
0311 uint8_t rsvd2[8];
0312 itt_t itt;
0313 itt_t rtt;
0314 __be32 statsn;
0315 __be32 exp_cmdsn;
0316 __be32 max_cmdsn;
0317 uint8_t rsvd3[12];
0318 };
0319
0320
0321 #define ISCSI_TMF_RSP_COMPLETE 0x00
0322 #define ISCSI_TMF_RSP_NO_TASK 0x01
0323 #define ISCSI_TMF_RSP_NO_LUN 0x02
0324 #define ISCSI_TMF_RSP_TASK_ALLEGIANT 0x03
0325 #define ISCSI_TMF_RSP_NO_FAILOVER 0x04
0326 #define ISCSI_TMF_RSP_NOT_SUPPORTED 0x05
0327 #define ISCSI_TMF_RSP_AUTH_FAILED 0x06
0328 #define ISCSI_TMF_RSP_REJECTED 0xff
0329
0330
0331 struct iscsi_r2t_rsp {
0332 uint8_t opcode;
0333 uint8_t flags;
0334 uint8_t rsvd2[2];
0335 uint8_t hlength;
0336 uint8_t dlength[3];
0337 struct scsi_lun lun;
0338 itt_t itt;
0339 __be32 ttt;
0340 __be32 statsn;
0341 __be32 exp_cmdsn;
0342 __be32 max_cmdsn;
0343 __be32 r2tsn;
0344 __be32 data_offset;
0345 __be32 data_length;
0346 };
0347
0348
0349 struct iscsi_data {
0350 uint8_t opcode;
0351 uint8_t flags;
0352 uint8_t rsvd2[2];
0353 uint8_t rsvd3;
0354 uint8_t dlength[3];
0355 struct scsi_lun lun;
0356 itt_t itt;
0357 __be32 ttt;
0358 __be32 rsvd4;
0359 __be32 exp_statsn;
0360 __be32 rsvd5;
0361 __be32 datasn;
0362 __be32 offset;
0363 __be32 rsvd6;
0364
0365 };
0366
0367
0368 struct iscsi_data_rsp {
0369 uint8_t opcode;
0370 uint8_t flags;
0371 uint8_t rsvd2;
0372 uint8_t cmd_status;
0373 uint8_t hlength;
0374 uint8_t dlength[3];
0375 struct scsi_lun lun;
0376 itt_t itt;
0377 __be32 ttt;
0378 __be32 statsn;
0379 __be32 exp_cmdsn;
0380 __be32 max_cmdsn;
0381 __be32 datasn;
0382 __be32 offset;
0383 __be32 residual_count;
0384 };
0385
0386
0387 #define ISCSI_FLAG_DATA_ACK 0x40
0388 #define ISCSI_FLAG_DATA_OVERFLOW 0x04
0389 #define ISCSI_FLAG_DATA_UNDERFLOW 0x02
0390 #define ISCSI_FLAG_DATA_STATUS 0x01
0391
0392
0393 struct iscsi_text {
0394 uint8_t opcode;
0395 uint8_t flags;
0396 uint8_t rsvd2[2];
0397 uint8_t hlength;
0398 uint8_t dlength[3];
0399 uint8_t rsvd4[8];
0400 itt_t itt;
0401 __be32 ttt;
0402 __be32 cmdsn;
0403 __be32 exp_statsn;
0404 uint8_t rsvd5[16];
0405
0406 };
0407
0408 #define ISCSI_FLAG_TEXT_CONTINUE 0x40
0409
0410
0411 struct iscsi_text_rsp {
0412 uint8_t opcode;
0413 uint8_t flags;
0414 uint8_t rsvd2[2];
0415 uint8_t hlength;
0416 uint8_t dlength[3];
0417 uint8_t rsvd4[8];
0418 itt_t itt;
0419 __be32 ttt;
0420 __be32 statsn;
0421 __be32 exp_cmdsn;
0422 __be32 max_cmdsn;
0423 uint8_t rsvd5[12];
0424
0425 };
0426
0427
0428 struct iscsi_login_req {
0429 uint8_t opcode;
0430 uint8_t flags;
0431 uint8_t max_version;
0432 uint8_t min_version;
0433 uint8_t hlength;
0434 uint8_t dlength[3];
0435 uint8_t isid[6];
0436 __be16 tsih;
0437 itt_t itt;
0438 __be16 cid;
0439 __be16 rsvd3;
0440 __be32 cmdsn;
0441 __be32 exp_statsn;
0442 uint8_t rsvd5[16];
0443 };
0444
0445
0446 #define ISCSI_FLAG_LOGIN_TRANSIT 0x80
0447 #define ISCSI_FLAG_LOGIN_CONTINUE 0x40
0448 #define ISCSI_FLAG_LOGIN_CURRENT_STAGE_MASK 0x0C
0449 #define ISCSI_FLAG_LOGIN_CURRENT_STAGE1 0x04
0450 #define ISCSI_FLAG_LOGIN_CURRENT_STAGE2 0x08
0451 #define ISCSI_FLAG_LOGIN_CURRENT_STAGE3 0x0C
0452 #define ISCSI_FLAG_LOGIN_NEXT_STAGE_MASK 0x03
0453 #define ISCSI_FLAG_LOGIN_NEXT_STAGE1 0x01
0454 #define ISCSI_FLAG_LOGIN_NEXT_STAGE2 0x02
0455 #define ISCSI_FLAG_LOGIN_NEXT_STAGE3 0x03
0456
0457 #define ISCSI_LOGIN_CURRENT_STAGE(flags) \
0458 ((flags & ISCSI_FLAG_LOGIN_CURRENT_STAGE_MASK) >> 2)
0459 #define ISCSI_LOGIN_NEXT_STAGE(flags) \
0460 (flags & ISCSI_FLAG_LOGIN_NEXT_STAGE_MASK)
0461
0462
0463 struct iscsi_login_rsp {
0464 uint8_t opcode;
0465 uint8_t flags;
0466 uint8_t max_version;
0467 uint8_t active_version;
0468 uint8_t hlength;
0469 uint8_t dlength[3];
0470 uint8_t isid[6];
0471 __be16 tsih;
0472 itt_t itt;
0473 __be32 rsvd3;
0474 __be32 statsn;
0475 __be32 exp_cmdsn;
0476 __be32 max_cmdsn;
0477 uint8_t status_class;
0478 uint8_t status_detail;
0479 uint8_t rsvd4[10];
0480 };
0481
0482
0483 #define ISCSI_INITIAL_LOGIN_STAGE -1
0484 #define ISCSI_SECURITY_NEGOTIATION_STAGE 0
0485 #define ISCSI_OP_PARMS_NEGOTIATION_STAGE 1
0486 #define ISCSI_FULL_FEATURE_PHASE 3
0487
0488
0489 #define ISCSI_STATUS_CLS_SUCCESS 0x00
0490 #define ISCSI_STATUS_CLS_REDIRECT 0x01
0491 #define ISCSI_STATUS_CLS_INITIATOR_ERR 0x02
0492 #define ISCSI_STATUS_CLS_TARGET_ERR 0x03
0493
0494
0495
0496 #define ISCSI_LOGIN_STATUS_ACCEPT 0x00
0497
0498
0499 #define ISCSI_LOGIN_STATUS_TGT_MOVED_TEMP 0x01
0500 #define ISCSI_LOGIN_STATUS_TGT_MOVED_PERM 0x02
0501
0502
0503 #define ISCSI_LOGIN_STATUS_INIT_ERR 0x00
0504 #define ISCSI_LOGIN_STATUS_AUTH_FAILED 0x01
0505 #define ISCSI_LOGIN_STATUS_TGT_FORBIDDEN 0x02
0506 #define ISCSI_LOGIN_STATUS_TGT_NOT_FOUND 0x03
0507 #define ISCSI_LOGIN_STATUS_TGT_REMOVED 0x04
0508 #define ISCSI_LOGIN_STATUS_NO_VERSION 0x05
0509 #define ISCSI_LOGIN_STATUS_ISID_ERROR 0x06
0510 #define ISCSI_LOGIN_STATUS_MISSING_FIELDS 0x07
0511 #define ISCSI_LOGIN_STATUS_CONN_ADD_FAILED 0x08
0512 #define ISCSI_LOGIN_STATUS_NO_SESSION_TYPE 0x09
0513 #define ISCSI_LOGIN_STATUS_NO_SESSION 0x0a
0514 #define ISCSI_LOGIN_STATUS_INVALID_REQUEST 0x0b
0515
0516
0517 #define ISCSI_LOGIN_STATUS_TARGET_ERROR 0x00
0518 #define ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE 0x01
0519 #define ISCSI_LOGIN_STATUS_NO_RESOURCES 0x02
0520
0521
0522 struct iscsi_logout {
0523 uint8_t opcode;
0524 uint8_t flags;
0525 uint8_t rsvd1[2];
0526 uint8_t hlength;
0527 uint8_t dlength[3];
0528 uint8_t rsvd2[8];
0529 itt_t itt;
0530 __be16 cid;
0531 uint8_t rsvd3[2];
0532 __be32 cmdsn;
0533 __be32 exp_statsn;
0534 uint8_t rsvd4[16];
0535 };
0536
0537
0538 #define ISCSI_FLAG_LOGOUT_REASON_MASK 0x7F
0539
0540
0541
0542 #define ISCSI_LOGOUT_REASON_CLOSE_SESSION 0
0543 #define ISCSI_LOGOUT_REASON_CLOSE_CONNECTION 1
0544 #define ISCSI_LOGOUT_REASON_RECOVERY 2
0545 #define ISCSI_LOGOUT_REASON_AEN_REQUEST 3
0546
0547
0548 struct iscsi_logout_rsp {
0549 uint8_t opcode;
0550 uint8_t flags;
0551 uint8_t response;
0552 uint8_t rsvd2;
0553 uint8_t hlength;
0554 uint8_t dlength[3];
0555 uint8_t rsvd3[8];
0556 itt_t itt;
0557 __be32 rsvd4;
0558 __be32 statsn;
0559 __be32 exp_cmdsn;
0560 __be32 max_cmdsn;
0561 __be32 rsvd5;
0562 __be16 t2wait;
0563 __be16 t2retain;
0564 __be32 rsvd6;
0565 };
0566
0567
0568
0569 #define ISCSI_LOGOUT_SUCCESS 0
0570 #define ISCSI_LOGOUT_CID_NOT_FOUND 1
0571 #define ISCSI_LOGOUT_RECOVERY_UNSUPPORTED 2
0572 #define ISCSI_LOGOUT_CLEANUP_FAILED 3
0573
0574
0575 struct iscsi_snack {
0576 uint8_t opcode;
0577 uint8_t flags;
0578 uint8_t rsvd2[2];
0579 uint8_t hlength;
0580 uint8_t dlength[3];
0581 uint8_t lun[8];
0582 itt_t itt;
0583 __be32 ttt;
0584 uint8_t rsvd3[4];
0585 __be32 exp_statsn;
0586 uint8_t rsvd4[8];
0587 __be32 begrun;
0588 __be32 runlength;
0589 };
0590
0591
0592 #define ISCSI_FLAG_SNACK_TYPE_DATA 0
0593 #define ISCSI_FLAG_SNACK_TYPE_R2T 0
0594 #define ISCSI_FLAG_SNACK_TYPE_STATUS 1
0595 #define ISCSI_FLAG_SNACK_TYPE_DATA_ACK 2
0596 #define ISCSI_FLAG_SNACK_TYPE_RDATA 3
0597 #define ISCSI_FLAG_SNACK_TYPE_MASK 0x0F
0598
0599
0600 struct iscsi_reject {
0601 uint8_t opcode;
0602 uint8_t flags;
0603 uint8_t reason;
0604 uint8_t rsvd2;
0605 uint8_t hlength;
0606 uint8_t dlength[3];
0607 uint8_t rsvd3[8];
0608 __be32 ffffffff;
0609 uint8_t rsvd4[4];
0610 __be32 statsn;
0611 __be32 exp_cmdsn;
0612 __be32 max_cmdsn;
0613 __be32 datasn;
0614 uint8_t rsvd5[8];
0615
0616 };
0617
0618
0619 #define ISCSI_REASON_CMD_BEFORE_LOGIN 1
0620 #define ISCSI_REASON_DATA_DIGEST_ERROR 2
0621 #define ISCSI_REASON_DATA_SNACK_REJECT 3
0622 #define ISCSI_REASON_PROTOCOL_ERROR 4
0623 #define ISCSI_REASON_CMD_NOT_SUPPORTED 5
0624 #define ISCSI_REASON_IMM_CMD_REJECT 6
0625 #define ISCSI_REASON_TASK_IN_PROGRESS 7
0626 #define ISCSI_REASON_INVALID_SNACK 8
0627 #define ISCSI_REASON_BOOKMARK_INVALID 9
0628 #define ISCSI_REASON_BOOKMARK_NO_RESOURCES 10
0629 #define ISCSI_REASON_NEGOTIATION_RESET 11
0630
0631
0632 #define MAX_KEY_VALUE_PAIRS 8192
0633
0634
0635 #define KEY_MAXLEN 64
0636 #define VALUE_MAXLEN 255
0637 #define TARGET_NAME_MAXLEN VALUE_MAXLEN
0638
0639 #define ISCSI_DEF_MAX_RECV_SEG_LEN 8192
0640 #define ISCSI_MIN_MAX_RECV_SEG_LEN 512
0641 #define ISCSI_MAX_MAX_RECV_SEG_LEN 16777215
0642
0643 #define ISCSI_DEF_FIRST_BURST_LEN 65536
0644 #define ISCSI_MIN_FIRST_BURST_LEN 512
0645 #define ISCSI_MAX_FIRST_BURST_LEN 16777215
0646
0647 #define ISCSI_DEF_MAX_BURST_LEN 262144
0648 #define ISCSI_MIN_MAX_BURST_LEN 512
0649 #define ISCSI_MAX_MAX_BURST_LEN 16777215
0650
0651 #define ISCSI_DEF_TIME2WAIT 2
0652
0653 #define ISCSI_NAME_LEN 224
0654
0655
0656
0657 #endif