Negotiate DefaultTime2Wait and DefaultTime2Retain during login phase
This commit is contained in:
52
lib/login.c
52
lib/login.c
@@ -308,6 +308,46 @@ iscsi_login_add_datapduinorder(struct iscsi_context *iscsi, struct iscsi_pdu *pd
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
iscsi_login_add_defaulttime2wait(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
|
||||||
|
{
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
/* We only send DefaultTime2Wait during opneg */
|
||||||
|
if (iscsi->current_phase != ISCSI_PDU_LOGIN_CSG_OPNEG) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
str = (char *)"DefaultTime2Wait=2";
|
||||||
|
if (iscsi_pdu_add_data(iscsi, pdu, (unsigned char *)str, strlen(str)+1)
|
||||||
|
!= 0) {
|
||||||
|
iscsi_set_error(iscsi, "Out-of-memory: pdu add data failed.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
iscsi_login_add_defaulttime2retain(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
|
||||||
|
{
|
||||||
|
char *str;
|
||||||
|
|
||||||
|
/* We only send DefaultTime2Retain during opneg */
|
||||||
|
if (iscsi->current_phase != ISCSI_PDU_LOGIN_CSG_OPNEG) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
str = (char *)"DefaultTime2Retain=20";
|
||||||
|
if (iscsi_pdu_add_data(iscsi, pdu, (unsigned char *)str, strlen(str)+1)
|
||||||
|
!= 0) {
|
||||||
|
iscsi_set_error(iscsi, "Out-of-memory: pdu add data failed.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
iscsi_login_add_datasequenceinorder(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
|
iscsi_login_add_datasequenceinorder(struct iscsi_context *iscsi, struct iscsi_pdu *pdu)
|
||||||
{
|
{
|
||||||
@@ -631,6 +671,18 @@ iscsi_login_async(struct iscsi_context *iscsi, iscsi_command_cb cb,
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* default time 2 wait */
|
||||||
|
if (iscsi_login_add_defaulttime2wait(iscsi, pdu) != 0) {
|
||||||
|
iscsi_free_pdu(iscsi, pdu);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* default time 2 retain */
|
||||||
|
if (iscsi_login_add_defaulttime2retain(iscsi, pdu) != 0) {
|
||||||
|
iscsi_free_pdu(iscsi, pdu);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
/* max recv data segment length */
|
/* max recv data segment length */
|
||||||
if (iscsi_login_add_maxrecvdatasegmentlength(iscsi, pdu) != 0) {
|
if (iscsi_login_add_maxrecvdatasegmentlength(iscsi, pdu) != 0) {
|
||||||
iscsi_free_pdu(iscsi, pdu);
|
iscsi_free_pdu(iscsi, pdu);
|
||||||
|
|||||||
Reference in New Issue
Block a user