aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/cam/ctl/ctl_frontend_iscsi.c7
-rw-r--r--sys/cam/ctl/ctl_frontend_iscsi.h2
-rw-r--r--sys/cam/ctl/ctl_ioctl.h1
-rw-r--r--usr.sbin/ctld/ctld.h1
-rw-r--r--usr.sbin/ctld/kernel.c2
-rw-r--r--usr.sbin/ctld/login.c3
6 files changed, 16 insertions, 0 deletions
diff --git a/sys/cam/ctl/ctl_frontend_iscsi.c b/sys/cam/ctl/ctl_frontend_iscsi.c
index da2ba3f927eb..31f914b12107 100644
--- a/sys/cam/ctl/ctl_frontend_iscsi.c
+++ b/sys/cam/ctl/ctl_frontend_iscsi.c
@@ -1507,6 +1507,13 @@ cfiscsi_ioctl_handoff(struct ctl_iscsi *ci)
cihp->initiator_addr, sizeof(cs->cs_initiator_addr));
strlcpy(cs->cs_initiator_alias,
cihp->initiator_alias, sizeof(cs->cs_initiator_alias));
+ memcpy(cs->cs_initiator_isid,
+ cihp->initiator_isid, sizeof(cs->cs_initiator_isid));
+ snprintf(cs->cs_initiator_id, sizeof(cs->cs_initiator_id),
+ "%s,i,0x%02x%02x%02x%02x%02x%02x", cs->cs_initiator_name,
+ cihp->initiator_isid[0], cihp->initiator_isid[1],
+ cihp->initiator_isid[2], cihp->initiator_isid[3],
+ cihp->initiator_isid[4], cihp->initiator_isid[5]);
#ifdef ICL_KERNEL_PROXY
if (cihp->socket > 0) {
diff --git a/sys/cam/ctl/ctl_frontend_iscsi.h b/sys/cam/ctl/ctl_frontend_iscsi.h
index 887576ad12e7..886e8acd361d 100644
--- a/sys/cam/ctl/ctl_frontend_iscsi.h
+++ b/sys/cam/ctl/ctl_frontend_iscsi.h
@@ -86,6 +86,8 @@ struct cfiscsi_session {
char cs_initiator_name[CTL_ISCSI_NAME_LEN];
char cs_initiator_addr[CTL_ISCSI_ADDR_LEN];
char cs_initiator_alias[CTL_ISCSI_ALIAS_LEN];
+ char cs_initiator_isid[6];
+ char cs_initiator_id[CTL_ISCSI_NAME_LEN + 5 + 6 + 1];
unsigned int cs_id;
int cs_ctl_initid;
#ifdef ICL_KERNEL_PROXY
diff --git a/sys/cam/ctl/ctl_ioctl.h b/sys/cam/ctl/ctl_ioctl.h
index 06ff93682b6c..94a7cc8f3985 100644
--- a/sys/cam/ctl/ctl_ioctl.h
+++ b/sys/cam/ctl/ctl_ioctl.h
@@ -681,6 +681,7 @@ struct ctl_iscsi_handoff_params {
char initiator_name[CTL_ISCSI_NAME_LEN];
char initiator_addr[CTL_ISCSI_ADDR_LEN];
char initiator_alias[CTL_ISCSI_ALIAS_LEN];
+ uint8_t initiator_isid[6];
char target_name[CTL_ISCSI_NAME_LEN];
int socket;
int portal_group_tag;
diff --git a/usr.sbin/ctld/ctld.h b/usr.sbin/ctld/ctld.h
index 5f7aea6d6f9b..323ef2c9c023 100644
--- a/usr.sbin/ctld/ctld.h
+++ b/usr.sbin/ctld/ctld.h
@@ -178,6 +178,7 @@ struct connection {
char *conn_initiator_name;
char *conn_initiator_addr;
char *conn_initiator_alias;
+ uint8_t conn_initiator_isid[6];
uint32_t conn_cmdsn;
uint32_t conn_statsn;
size_t conn_max_data_segment_length;
diff --git a/usr.sbin/ctld/kernel.c b/usr.sbin/ctld/kernel.c
index dc07591bfb9b..74cb27ed9a2d 100644
--- a/usr.sbin/ctld/kernel.c
+++ b/usr.sbin/ctld/kernel.c
@@ -787,6 +787,8 @@ kernel_handoff(struct connection *conn)
strlcpy(req.data.handoff.initiator_alias,
conn->conn_initiator_alias, sizeof(req.data.handoff.initiator_alias));
}
+ memcpy(req.data.handoff.initiator_isid, conn->conn_initiator_isid,
+ sizeof(req.data.handoff.initiator_isid));
strlcpy(req.data.handoff.target_name,
conn->conn_target->t_name, sizeof(req.data.handoff.target_name));
#ifdef ICL_KERNEL_PROXY
diff --git a/usr.sbin/ctld/login.c b/usr.sbin/ctld/login.c
index f830d15fc929..b14b264ef993 100644
--- a/usr.sbin/ctld/login.c
+++ b/usr.sbin/ctld/login.c
@@ -850,6 +850,9 @@ login(struct connection *conn)
log_errx(1, "received Login PDU with non-zero TSIH");
}
+ memcpy(conn->conn_initiator_isid, bhslr->bhslr_isid,
+ sizeof(conn->conn_initiator_isid));
+
/*
* XXX: Implement the C flag some day.
*/