summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ctld
diff options
context:
space:
mode:
authormav <mav@FreeBSD.org>2014-07-15 17:07:07 +0000
committermav <mav@FreeBSD.org>2014-07-15 17:07:07 +0000
commit0468376762ffd7c8bbae1163c059f5c3ec8de0a3 (patch)
treea2dc6d66a26f7316097c24487370eb1527eeb98f /usr.sbin/ctld
parentf1200cac157574450e2e32e4098cb478bc3e04db (diff)
downloadFreeBSD-src-0468376762ffd7c8bbae1163c059f5c3ec8de0a3.zip
FreeBSD-src-0468376762ffd7c8bbae1163c059f5c3ec8de0a3.tar.gz
MFC r268302:
Pass through iSCSI session ISID from LOGIN request to the CTL frontend. ISID is an important part of initiator transport ID for iSCSI. It is not used now, but should be to properly implement persistent reservation.
Diffstat (limited to 'usr.sbin/ctld')
-rw-r--r--usr.sbin/ctld/ctld.h1
-rw-r--r--usr.sbin/ctld/kernel.c2
-rw-r--r--usr.sbin/ctld/login.c3
3 files changed, 6 insertions, 0 deletions
diff --git a/usr.sbin/ctld/ctld.h b/usr.sbin/ctld/ctld.h
index 5f7aea6..323ef2c 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 3c958c8..0b55449 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 f830d15..b14b264 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.
*/
OpenPOWER on IntegriCloud