Commit 97c2730c authored by Adheer Chandravanshi's avatar Adheer Chandravanshi Committed by James Bottomley

[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: default avatarAdheer Chandravanshi <adheer.chandravanshi@qlogic.com>
Signed-off-by: default avatarVikas Chaudhary <vikas.chaudhary@qlogic.com>
Signed-off-by: default avatarJames Bottomley <JBottomley@Parallels.com>
parent 26ffd7b4
...@@ -1652,9 +1652,12 @@ static int qla4xxx_session_get_param(struct iscsi_cls_session *cls_sess, ...@@ -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, ...@@ -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);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment