1 /* 2 * RFC 3720 (iSCSI) protocol data types 3 * 4 * Copyright (C) 2005 Dmitry Yusupov 5 * Copyright (C) 2005 Alex Aizman 6 * maintained by open-iscsi@googlegroups.com 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published 10 * by the Free Software Foundation; either version 2 of the License, or 11 * (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, but 14 * WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 16 * General Public License for more details. 17 * 18 * See the file COPYING included with this distribution for more details. 19 */ 20 21 #ifndef ISCSI_PROTO_H 22 #define ISCSI_PROTO_H 23 24 #include <linux/types.h> 25 26 #define ISCSI_DRAFT20_VERSION 0x00 27 28 /* default iSCSI listen port for incoming connections */ 29 #define ISCSI_LISTEN_PORT 3260 30 31 /* Padding word length */ 32 #define ISCSI_PAD_LEN 4 33 34 /* 35 * useful common(control and data pathes) macro 36 */ 37 #define ntoh24(p) (((p)[0] << 16) | ((p)[1] << 8) | ((p)[2])) 38 #define hton24(p, v) { \ 39 p[0] = (((v) >> 16) & 0xFF); \ 40 p[1] = (((v) >> 8) & 0xFF); \ 41 p[2] = ((v) & 0xFF); \ 42 } 43 #define zero_data(p) {p[0]=0;p[1]=0;p[2]=0;} 44 45 /* initiator tags; opaque for target */ 46 typedef uint32_t __bitwise__ itt_t; 47 /* below makes sense only for initiator that created this tag */ 48 #define build_itt(itt, id, age) ((__force itt_t)\ 49 ((itt) | ((id) << ISCSI_CID_SHIFT) | ((age) << ISCSI_AGE_SHIFT))) 50 #define get_itt(itt) ((__force uint32_t)(itt_t)(itt) & ISCSI_ITT_MASK) 51 #define RESERVED_ITT ((__force itt_t)0xffffffff) 52 53 /* 54 * iSCSI Template Message Header 55 */ 56 struct iscsi_hdr { 57 uint8_t opcode; 58 uint8_t flags; /* Final bit */ 59 uint8_t rsvd2[2]; 60 uint8_t hlength; /* AHSs total length */ 61 uint8_t dlength[3]; /* Data length */ 62 uint8_t lun[8]; 63 itt_t itt; /* Initiator Task Tag, opaque for target */ 64 __be32 ttt; /* Target Task Tag */ 65 __be32 statsn; 66 __be32 exp_statsn; 67 __be32 max_statsn; 68 uint8_t other[12]; 69 }; 70 71 /************************* RFC 3720 Begin *****************************/ 72 73 #define ISCSI_RESERVED_TAG 0xffffffff 74 75 /* Opcode encoding bits */ 76 #define ISCSI_OP_RETRY 0x80 77 #define ISCSI_OP_IMMEDIATE 0x40 78 #define ISCSI_OPCODE_MASK 0x3F 79 80 /* Initiator Opcode values */ 81 #define ISCSI_OP_NOOP_OUT 0x00 82 #define ISCSI_OP_SCSI_CMD 0x01 83 #define ISCSI_OP_SCSI_TMFUNC 0x02 84 #define ISCSI_OP_LOGIN 0x03 85 #define ISCSI_OP_TEXT 0x04 86 #define ISCSI_OP_SCSI_DATA_OUT 0x05 87 #define ISCSI_OP_LOGOUT 0x06 88 #define ISCSI_OP_SNACK 0x10 89 90 #define ISCSI_OP_VENDOR1_CMD 0x1c 91 #define ISCSI_OP_VENDOR2_CMD 0x1d 92 #define ISCSI_OP_VENDOR3_CMD 0x1e 93 #define ISCSI_OP_VENDOR4_CMD 0x1f 94 95 /* Target Opcode values */ 96 #define ISCSI_OP_NOOP_IN 0x20 97 #define ISCSI_OP_SCSI_CMD_RSP 0x21 98 #define ISCSI_OP_SCSI_TMFUNC_RSP 0x22 99 #define ISCSI_OP_LOGIN_RSP 0x23 100 #define ISCSI_OP_TEXT_RSP 0x24 101 #define ISCSI_OP_SCSI_DATA_IN 0x25 102 #define ISCSI_OP_LOGOUT_RSP 0x26 103 #define ISCSI_OP_R2T 0x31 104 #define ISCSI_OP_ASYNC_EVENT 0x32 105 #define ISCSI_OP_REJECT 0x3f 106 107 struct iscsi_ahs_hdr { 108 __be16 ahslength; 109 uint8_t ahstype; 110 uint8_t ahspec[5]; 111 }; 112 113 #define ISCSI_AHSTYPE_CDB 1 114 #define ISCSI_AHSTYPE_RLENGTH 2 115 116 /* iSCSI PDU Header */ 117 struct iscsi_cmd { 118 uint8_t opcode; 119 uint8_t flags; 120 __be16 rsvd2; 121 uint8_t hlength; 122 uint8_t dlength[3]; 123 uint8_t lun[8]; 124 itt_t itt; /* Initiator Task Tag */ 125 __be32 data_length; 126 __be32 cmdsn; 127 __be32 exp_statsn; 128 uint8_t cdb[16]; /* SCSI Command Block */ 129 /* Additional Data (Command Dependent) */ 130 }; 131 132 /* Command PDU flags */ 133 #define ISCSI_FLAG_CMD_FINAL 0x80 134 #define ISCSI_FLAG_CMD_READ 0x40 135 #define ISCSI_FLAG_CMD_WRITE 0x20 136 #define ISCSI_FLAG_CMD_ATTR_MASK 0x07 /* 3 bits */ 137 138 /* SCSI Command Attribute values */ 139 #define ISCSI_ATTR_UNTAGGED 0 140 #define ISCSI_ATTR_SIMPLE 1 141 #define ISCSI_ATTR_ORDERED 2 142 #define ISCSI_ATTR_HEAD_OF_QUEUE 3 143 #define ISCSI_ATTR_ACA 4 144 145 struct iscsi_rlength_ahdr { 146 __be16 ahslength; 147 uint8_t ahstype; 148 uint8_t reserved; 149 __be32 read_length; 150 }; 151 152 /* Extended CDB AHS */ 153 struct iscsi_ecdb_ahdr { 154 __be16 ahslength; /* CDB length - 15, including reserved byte */ 155 uint8_t ahstype; 156 uint8_t reserved; 157 uint8_t ecdb[260 - 16]; /* 4-byte aligned extended CDB spillover */ 158 }; 159 160 /* SCSI Response Header */ 161 struct iscsi_cmd_rsp { 162 uint8_t opcode; 163 uint8_t flags; 164 uint8_t response; 165 uint8_t cmd_status; 166 uint8_t hlength; 167 uint8_t dlength[3]; 168 uint8_t rsvd[8]; 169 itt_t itt; /* Initiator Task Tag */ 170 __be32 rsvd1; 171 __be32 statsn; 172 __be32 exp_cmdsn; 173 __be32 max_cmdsn; 174 __be32 exp_datasn; 175 __be32 bi_residual_count; 176 __be32 residual_count; 177 /* Response or Sense Data (optional) */ 178 }; 179 180 /* Command Response PDU flags */ 181 #define ISCSI_FLAG_CMD_BIDI_OVERFLOW 0x10 182 #define ISCSI_FLAG_CMD_BIDI_UNDERFLOW 0x08 183 #define ISCSI_FLAG_CMD_OVERFLOW 0x04 184 #define ISCSI_FLAG_CMD_UNDERFLOW 0x02 185 186 /* iSCSI Status values. Valid if Rsp Selector bit is not set */ 187 #define ISCSI_STATUS_CMD_COMPLETED 0 188 #define ISCSI_STATUS_TARGET_FAILURE 1 189 #define ISCSI_STATUS_SUBSYS_FAILURE 2 190 191 /* Asynchronous Event Header */ 192 struct iscsi_async { 193 uint8_t opcode; 194 uint8_t flags; 195 uint8_t rsvd2[2]; 196 uint8_t rsvd3; 197 uint8_t dlength[3]; 198 uint8_t lun[8]; 199 uint8_t rsvd4[8]; 200 __be32 statsn; 201 __be32 exp_cmdsn; 202 __be32 max_cmdsn; 203 uint8_t async_event; 204 uint8_t async_vcode; 205 __be16 param1; 206 __be16 param2; 207 __be16 param3; 208 uint8_t rsvd5[4]; 209 }; 210 211 /* iSCSI Event Codes */ 212 #define ISCSI_ASYNC_MSG_SCSI_EVENT 0 213 #define ISCSI_ASYNC_MSG_REQUEST_LOGOUT 1 214 #define ISCSI_ASYNC_MSG_DROPPING_CONNECTION 2 215 #define ISCSI_ASYNC_MSG_DROPPING_ALL_CONNECTIONS 3 216 #define ISCSI_ASYNC_MSG_PARAM_NEGOTIATION 4 217 #define ISCSI_ASYNC_MSG_VENDOR_SPECIFIC 255 218 219 /* NOP-Out Message */ 220 struct iscsi_nopout { 221 uint8_t opcode; 222 uint8_t flags; 223 __be16 rsvd2; 224 uint8_t rsvd3; 225 uint8_t dlength[3]; 226 uint8_t lun[8]; 227 itt_t itt; /* Initiator Task Tag */ 228 __be32 ttt; /* Target Transfer Tag */ 229 __be32 cmdsn; 230 __be32 exp_statsn; 231 uint8_t rsvd4[16]; 232 }; 233 234 /* NOP-In Message */ 235 struct iscsi_nopin { 236 uint8_t opcode; 237 uint8_t flags; 238 __be16 rsvd2; 239 uint8_t rsvd3; 240 uint8_t dlength[3]; 241 uint8_t lun[8]; 242 itt_t itt; /* Initiator Task Tag */ 243 __be32 ttt; /* Target Transfer Tag */ 244 __be32 statsn; 245 __be32 exp_cmdsn; 246 __be32 max_cmdsn; 247 uint8_t rsvd4[12]; 248 }; 249 250 /* SCSI Task Management Message Header */ 251 struct iscsi_tm { 252 uint8_t opcode; 253 uint8_t flags; 254 uint8_t rsvd1[2]; 255 uint8_t hlength; 256 uint8_t dlength[3]; 257 uint8_t lun[8]; 258 itt_t itt; /* Initiator Task Tag */ 259 itt_t rtt; /* Reference Task Tag */ 260 __be32 cmdsn; 261 __be32 exp_statsn; 262 __be32 refcmdsn; 263 __be32 exp_datasn; 264 uint8_t rsvd2[8]; 265 }; 266 267 #define ISCSI_FLAG_TM_FUNC_MASK 0x7F 268 269 /* Function values */ 270 #define ISCSI_TM_FUNC_ABORT_TASK 1 271 #define ISCSI_TM_FUNC_ABORT_TASK_SET 2 272 #define ISCSI_TM_FUNC_CLEAR_ACA 3 273 #define ISCSI_TM_FUNC_CLEAR_TASK_SET 4 274 #define ISCSI_TM_FUNC_LOGICAL_UNIT_RESET 5 275 #define ISCSI_TM_FUNC_TARGET_WARM_RESET 6 276 #define ISCSI_TM_FUNC_TARGET_COLD_RESET 7 277 #define ISCSI_TM_FUNC_TASK_REASSIGN 8 278 279 /* SCSI Task Management Response Header */ 280 struct iscsi_tm_rsp { 281 uint8_t opcode; 282 uint8_t flags; 283 uint8_t response; /* see Response values below */ 284 uint8_t qualifier; 285 uint8_t hlength; 286 uint8_t dlength[3]; 287 uint8_t rsvd2[8]; 288 itt_t itt; /* Initiator Task Tag */ 289 itt_t rtt; /* Reference Task Tag */ 290 __be32 statsn; 291 __be32 exp_cmdsn; 292 __be32 max_cmdsn; 293 uint8_t rsvd3[12]; 294 }; 295 296 /* Response values */ 297 #define ISCSI_TMF_RSP_COMPLETE 0x00 298 #define ISCSI_TMF_RSP_NO_TASK 0x01 299 #define ISCSI_TMF_RSP_NO_LUN 0x02 300 #define ISCSI_TMF_RSP_TASK_ALLEGIANT 0x03 301 #define ISCSI_TMF_RSP_NO_FAILOVER 0x04 302 #define ISCSI_TMF_RSP_NOT_SUPPORTED 0x05 303 #define ISCSI_TMF_RSP_AUTH_FAILED 0x06 304 #define ISCSI_TMF_RSP_REJECTED 0xff 305 306 /* Ready To Transfer Header */ 307 struct iscsi_r2t_rsp { 308 uint8_t opcode; 309 uint8_t flags; 310 uint8_t rsvd2[2]; 311 uint8_t hlength; 312 uint8_t dlength[3]; 313 uint8_t lun[8]; 314 itt_t itt; /* Initiator Task Tag */ 315 __be32 ttt; /* Target Transfer Tag */ 316 __be32 statsn; 317 __be32 exp_cmdsn; 318 __be32 max_cmdsn; 319 __be32 r2tsn; 320 __be32 data_offset; 321 __be32 data_length; 322 }; 323 324 /* SCSI Data Hdr */ 325 struct iscsi_data { 326 uint8_t opcode; 327 uint8_t flags; 328 uint8_t rsvd2[2]; 329 uint8_t rsvd3; 330 uint8_t dlength[3]; 331 uint8_t lun[8]; 332 itt_t itt; 333 __be32 ttt; 334 __be32 rsvd4; 335 __be32 exp_statsn; 336 __be32 rsvd5; 337 __be32 datasn; 338 __be32 offset; 339 __be32 rsvd6; 340 /* Payload */ 341 }; 342 343 /* SCSI Data Response Hdr */ 344 struct iscsi_data_rsp { 345 uint8_t opcode; 346 uint8_t flags; 347 uint8_t rsvd2; 348 uint8_t cmd_status; 349 uint8_t hlength; 350 uint8_t dlength[3]; 351 uint8_t lun[8]; 352 itt_t itt; 353 __be32 ttt; 354 __be32 statsn; 355 __be32 exp_cmdsn; 356 __be32 max_cmdsn; 357 __be32 datasn; 358 __be32 offset; 359 __be32 residual_count; 360 }; 361 362 /* Data Response PDU flags */ 363 #define ISCSI_FLAG_DATA_ACK 0x40 364 #define ISCSI_FLAG_DATA_OVERFLOW 0x04 365 #define ISCSI_FLAG_DATA_UNDERFLOW 0x02 366 #define ISCSI_FLAG_DATA_STATUS 0x01 367 368 /* Text Header */ 369 struct iscsi_text { 370 uint8_t opcode; 371 uint8_t flags; 372 uint8_t rsvd2[2]; 373 uint8_t hlength; 374 uint8_t dlength[3]; 375 uint8_t rsvd4[8]; 376 itt_t itt; 377 __be32 ttt; 378 __be32 cmdsn; 379 __be32 exp_statsn; 380 uint8_t rsvd5[16]; 381 /* Text - key=value pairs */ 382 }; 383 384 #define ISCSI_FLAG_TEXT_CONTINUE 0x40 385 386 /* Text Response Header */ 387 struct iscsi_text_rsp { 388 uint8_t opcode; 389 uint8_t flags; 390 uint8_t rsvd2[2]; 391 uint8_t hlength; 392 uint8_t dlength[3]; 393 uint8_t rsvd4[8]; 394 itt_t itt; 395 __be32 ttt; 396 __be32 statsn; 397 __be32 exp_cmdsn; 398 __be32 max_cmdsn; 399 uint8_t rsvd5[12]; 400 /* Text Response - key:value pairs */ 401 }; 402 403 /* Login Header */ 404 struct iscsi_login { 405 uint8_t opcode; 406 uint8_t flags; 407 uint8_t max_version; /* Max. version supported */ 408 uint8_t min_version; /* Min. version supported */ 409 uint8_t hlength; 410 uint8_t dlength[3]; 411 uint8_t isid[6]; /* Initiator Session ID */ 412 __be16 tsih; /* Target Session Handle */ 413 itt_t itt; /* Initiator Task Tag */ 414 __be16 cid; 415 __be16 rsvd3; 416 __be32 cmdsn; 417 __be32 exp_statsn; 418 uint8_t rsvd5[16]; 419 }; 420 421 /* Login PDU flags */ 422 #define ISCSI_FLAG_LOGIN_TRANSIT 0x80 423 #define ISCSI_FLAG_LOGIN_CONTINUE 0x40 424 #define ISCSI_FLAG_LOGIN_CURRENT_STAGE_MASK 0x0C /* 2 bits */ 425 #define ISCSI_FLAG_LOGIN_NEXT_STAGE_MASK 0x03 /* 2 bits */ 426 427 #define ISCSI_LOGIN_CURRENT_STAGE(flags) \ 428 ((flags & ISCSI_FLAG_LOGIN_CURRENT_STAGE_MASK) >> 2) 429 #define ISCSI_LOGIN_NEXT_STAGE(flags) \ 430 (flags & ISCSI_FLAG_LOGIN_NEXT_STAGE_MASK) 431 432 /* Login Response Header */ 433 struct iscsi_login_rsp { 434 uint8_t opcode; 435 uint8_t flags; 436 uint8_t max_version; /* Max. version supported */ 437 uint8_t active_version; /* Active version */ 438 uint8_t hlength; 439 uint8_t dlength[3]; 440 uint8_t isid[6]; /* Initiator Session ID */ 441 __be16 tsih; /* Target Session Handle */ 442 itt_t itt; /* Initiator Task Tag */ 443 __be32 rsvd3; 444 __be32 statsn; 445 __be32 exp_cmdsn; 446 __be32 max_cmdsn; 447 uint8_t status_class; /* see Login RSP ststus classes below */ 448 uint8_t status_detail; /* see Login RSP Status details below */ 449 uint8_t rsvd4[10]; 450 }; 451 452 /* Login stage (phase) codes for CSG, NSG */ 453 #define ISCSI_INITIAL_LOGIN_STAGE -1 454 #define ISCSI_SECURITY_NEGOTIATION_STAGE 0 455 #define ISCSI_OP_PARMS_NEGOTIATION_STAGE 1 456 #define ISCSI_FULL_FEATURE_PHASE 3 457 458 /* Login Status response classes */ 459 #define ISCSI_STATUS_CLS_SUCCESS 0x00 460 #define ISCSI_STATUS_CLS_REDIRECT 0x01 461 #define ISCSI_STATUS_CLS_INITIATOR_ERR 0x02 462 #define ISCSI_STATUS_CLS_TARGET_ERR 0x03 463 464 /* Login Status response detail codes */ 465 /* Class-0 (Success) */ 466 #define ISCSI_LOGIN_STATUS_ACCEPT 0x00 467 468 /* Class-1 (Redirection) */ 469 #define ISCSI_LOGIN_STATUS_TGT_MOVED_TEMP 0x01 470 #define ISCSI_LOGIN_STATUS_TGT_MOVED_PERM 0x02 471 472 /* Class-2 (Initiator Error) */ 473 #define ISCSI_LOGIN_STATUS_INIT_ERR 0x00 474 #define ISCSI_LOGIN_STATUS_AUTH_FAILED 0x01 475 #define ISCSI_LOGIN_STATUS_TGT_FORBIDDEN 0x02 476 #define ISCSI_LOGIN_STATUS_TGT_NOT_FOUND 0x03 477 #define ISCSI_LOGIN_STATUS_TGT_REMOVED 0x04 478 #define ISCSI_LOGIN_STATUS_NO_VERSION 0x05 479 #define ISCSI_LOGIN_STATUS_ISID_ERROR 0x06 480 #define ISCSI_LOGIN_STATUS_MISSING_FIELDS 0x07 481 #define ISCSI_LOGIN_STATUS_CONN_ADD_FAILED 0x08 482 #define ISCSI_LOGIN_STATUS_NO_SESSION_TYPE 0x09 483 #define ISCSI_LOGIN_STATUS_NO_SESSION 0x0a 484 #define ISCSI_LOGIN_STATUS_INVALID_REQUEST 0x0b 485 486 /* Class-3 (Target Error) */ 487 #define ISCSI_LOGIN_STATUS_TARGET_ERROR 0x00 488 #define ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE 0x01 489 #define ISCSI_LOGIN_STATUS_NO_RESOURCES 0x02 490 491 /* Logout Header */ 492 struct iscsi_logout { 493 uint8_t opcode; 494 uint8_t flags; 495 uint8_t rsvd1[2]; 496 uint8_t hlength; 497 uint8_t dlength[3]; 498 uint8_t rsvd2[8]; 499 itt_t itt; /* Initiator Task Tag */ 500 __be16 cid; 501 uint8_t rsvd3[2]; 502 __be32 cmdsn; 503 __be32 exp_statsn; 504 uint8_t rsvd4[16]; 505 }; 506 507 /* Logout PDU flags */ 508 #define ISCSI_FLAG_LOGOUT_REASON_MASK 0x7F 509 510 /* logout reason_code values */ 511 512 #define ISCSI_LOGOUT_REASON_CLOSE_SESSION 0 513 #define ISCSI_LOGOUT_REASON_CLOSE_CONNECTION 1 514 #define ISCSI_LOGOUT_REASON_RECOVERY 2 515 #define ISCSI_LOGOUT_REASON_AEN_REQUEST 3 516 517 /* Logout Response Header */ 518 struct iscsi_logout_rsp { 519 uint8_t opcode; 520 uint8_t flags; 521 uint8_t response; /* see Logout response values below */ 522 uint8_t rsvd2; 523 uint8_t hlength; 524 uint8_t dlength[3]; 525 uint8_t rsvd3[8]; 526 itt_t itt; /* Initiator Task Tag */ 527 __be32 rsvd4; 528 __be32 statsn; 529 __be32 exp_cmdsn; 530 __be32 max_cmdsn; 531 __be32 rsvd5; 532 __be16 t2wait; 533 __be16 t2retain; 534 __be32 rsvd6; 535 }; 536 537 /* logout response status values */ 538 539 #define ISCSI_LOGOUT_SUCCESS 0 540 #define ISCSI_LOGOUT_CID_NOT_FOUND 1 541 #define ISCSI_LOGOUT_RECOVERY_UNSUPPORTED 2 542 #define ISCSI_LOGOUT_CLEANUP_FAILED 3 543 544 /* SNACK Header */ 545 struct iscsi_snack { 546 uint8_t opcode; 547 uint8_t flags; 548 uint8_t rsvd2[14]; 549 itt_t itt; 550 __be32 begrun; 551 __be32 runlength; 552 __be32 exp_statsn; 553 __be32 rsvd3; 554 __be32 exp_datasn; 555 uint8_t rsvd6[8]; 556 }; 557 558 /* SNACK PDU flags */ 559 #define ISCSI_FLAG_SNACK_TYPE_MASK 0x0F /* 4 bits */ 560 561 /* Reject Message Header */ 562 struct iscsi_reject { 563 uint8_t opcode; 564 uint8_t flags; 565 uint8_t reason; 566 uint8_t rsvd2; 567 uint8_t hlength; 568 uint8_t dlength[3]; 569 uint8_t rsvd3[8]; 570 __be32 ffffffff; 571 uint8_t rsvd4[4]; 572 __be32 statsn; 573 __be32 exp_cmdsn; 574 __be32 max_cmdsn; 575 __be32 datasn; 576 uint8_t rsvd5[8]; 577 /* Text - Rejected hdr */ 578 }; 579 580 /* Reason for Reject */ 581 #define ISCSI_REASON_CMD_BEFORE_LOGIN 1 582 #define ISCSI_REASON_DATA_DIGEST_ERROR 2 583 #define ISCSI_REASON_DATA_SNACK_REJECT 3 584 #define ISCSI_REASON_PROTOCOL_ERROR 4 585 #define ISCSI_REASON_CMD_NOT_SUPPORTED 5 586 #define ISCSI_REASON_IMM_CMD_REJECT 6 587 #define ISCSI_REASON_TASK_IN_PROGRESS 7 588 #define ISCSI_REASON_INVALID_SNACK 8 589 #define ISCSI_REASON_BOOKMARK_INVALID 9 590 #define ISCSI_REASON_BOOKMARK_NO_RESOURCES 10 591 #define ISCSI_REASON_NEGOTIATION_RESET 11 592 593 /* Max. number of Key=Value pairs in a text message */ 594 #define MAX_KEY_VALUE_PAIRS 8192 595 596 /* maximum length for text keys/values */ 597 #define KEY_MAXLEN 64 598 #define VALUE_MAXLEN 255 599 #define TARGET_NAME_MAXLEN VALUE_MAXLEN 600 601 #define ISCSI_DEF_MAX_RECV_SEG_LEN 8192 602 #define ISCSI_MIN_MAX_RECV_SEG_LEN 512 603 #define ISCSI_MAX_MAX_RECV_SEG_LEN 16777215 604 605 #define ISCSI_DEF_FIRST_BURST_LEN 65536 606 #define ISCSI_MIN_FIRST_BURST_LEN 512 607 #define ISCSI_MAX_FIRST_BURST_LEN 16777215 608 609 #define ISCSI_DEF_MAX_BURST_LEN 262144 610 #define ISCSI_MIN_MAX_BURST_LEN 512 611 #define ISCSI_MAX_MAX_BURST_LEN 16777215 612 613 #define ISCSI_DEF_TIME2WAIT 2 614 615 /************************* RFC 3720 End *****************************/ 616 617 #endif /* ISCSI_PROTO_H */ 618