[SCSI] qla4xxx: Add support to get CHAP details for flash target session
Add support to get local CHAP - index, username and password, sysfs params of iscsi session corresponding to flash target entry. Signed-off-by: Adheer Chandravanshi <adheer.chandravanshi@qlogic.com> Signed-off-by: Vikas Chaudhary <vikas.chaudhary@qlogic.com> Signed-off-by: James Bottomley <JBottomley@Parallels.com>
This commit is contained in:
parent
26ffd7b45f
commit
97c2730cb8
@ -1652,9 +1652,12 @@ static int qla4xxx_session_get_param(struct iscsi_cls_session *cls_sess,
|
|||||||
struct iscsi_session *sess = cls_sess->dd_data;
|
struct iscsi_session *sess = cls_sess->dd_data;
|
||||||
struct ddb_entry *ddb_entry = sess->dd_data;
|
struct ddb_entry *ddb_entry = sess->dd_data;
|
||||||
struct scsi_qla_host *ha = ddb_entry->ha;
|
struct scsi_qla_host *ha = ddb_entry->ha;
|
||||||
|
struct iscsi_cls_conn *cls_conn = ddb_entry->conn;
|
||||||
|
struct ql4_chap_table chap_tbl;
|
||||||
int rval, len;
|
int rval, len;
|
||||||
uint16_t idx;
|
uint16_t idx;
|
||||||
|
|
||||||
|
memset(&chap_tbl, 0, sizeof(chap_tbl));
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case ISCSI_PARAM_CHAP_IN_IDX:
|
case ISCSI_PARAM_CHAP_IN_IDX:
|
||||||
rval = qla4xxx_get_chap_index(ha, sess->username_in,
|
rval = qla4xxx_get_chap_index(ha, sess->username_in,
|
||||||
@ -1666,14 +1669,46 @@ static int qla4xxx_session_get_param(struct iscsi_cls_session *cls_sess,
|
|||||||
len = sprintf(buf, "%hu\n", idx);
|
len = sprintf(buf, "%hu\n", idx);
|
||||||
break;
|
break;
|
||||||
case ISCSI_PARAM_CHAP_OUT_IDX:
|
case ISCSI_PARAM_CHAP_OUT_IDX:
|
||||||
|
if (ddb_entry->ddb_type == FLASH_DDB) {
|
||||||
|
if (ddb_entry->chap_tbl_idx != INVALID_ENTRY) {
|
||||||
|
idx = ddb_entry->chap_tbl_idx;
|
||||||
|
rval = QLA_SUCCESS;
|
||||||
|
} else {
|
||||||
|
rval = QLA_ERROR;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
rval = qla4xxx_get_chap_index(ha, sess->username,
|
rval = qla4xxx_get_chap_index(ha, sess->username,
|
||||||
sess->password, LOCAL_CHAP,
|
sess->password,
|
||||||
&idx);
|
LOCAL_CHAP, &idx);
|
||||||
|
}
|
||||||
if (rval)
|
if (rval)
|
||||||
len = sprintf(buf, "\n");
|
len = sprintf(buf, "\n");
|
||||||
else
|
else
|
||||||
len = sprintf(buf, "%hu\n", idx);
|
len = sprintf(buf, "%hu\n", idx);
|
||||||
break;
|
break;
|
||||||
|
case ISCSI_PARAM_USERNAME:
|
||||||
|
case ISCSI_PARAM_PASSWORD:
|
||||||
|
/* First, populate session username and password for FLASH DDB,
|
||||||
|
* if not already done. This happens when session login fails
|
||||||
|
* for a FLASH DDB.
|
||||||
|
*/
|
||||||
|
if (ddb_entry->ddb_type == FLASH_DDB &&
|
||||||
|
ddb_entry->chap_tbl_idx != INVALID_ENTRY &&
|
||||||
|
!sess->username && !sess->password) {
|
||||||
|
idx = ddb_entry->chap_tbl_idx;
|
||||||
|
rval = qla4xxx_get_uni_chap_at_index(ha, chap_tbl.name,
|
||||||
|
chap_tbl.secret,
|
||||||
|
idx);
|
||||||
|
if (!rval) {
|
||||||
|
iscsi_set_param(cls_conn, ISCSI_PARAM_USERNAME,
|
||||||
|
(char *)chap_tbl.name,
|
||||||
|
strlen((char *)chap_tbl.name));
|
||||||
|
iscsi_set_param(cls_conn, ISCSI_PARAM_PASSWORD,
|
||||||
|
(char *)chap_tbl.secret,
|
||||||
|
chap_tbl.secret_len);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* allow fall-through */
|
||||||
default:
|
default:
|
||||||
return iscsi_session_get_param(cls_sess, param, buf);
|
return iscsi_session_get_param(cls_sess, param, buf);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user