summaryrefslogtreecommitdiffstats
path: root/usr.sbin/ctld/kernel.c
diff options
context:
space:
mode:
authortrasz <trasz@FreeBSD.org>2014-05-07 07:37:55 +0000
committertrasz <trasz@FreeBSD.org>2014-05-07 07:37:55 +0000
commit21ec0cf2d04e4aa633946733cbc2771bb4ceb398 (patch)
tree58555ca5911d866052e6587412bcb42076b5e484 /usr.sbin/ctld/kernel.c
parenta59839947cb5d7096df809172f3a5d5085bf9b8a (diff)
downloadFreeBSD-src-21ec0cf2d04e4aa633946733cbc2771bb4ceb398.zip
FreeBSD-src-21ec0cf2d04e4aa633946733cbc2771bb4ceb398.tar.gz
MFC r264530:
Properly pass the initiator address when running in proxy mode. Sponsored by: The FreeBSD Foundation
Diffstat (limited to 'usr.sbin/ctld/kernel.c')
-rw-r--r--usr.sbin/ctld/kernel.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/usr.sbin/ctld/kernel.c b/usr.sbin/ctld/kernel.c
index 6907868..ad83679 100644
--- a/usr.sbin/ctld/kernel.c
+++ b/usr.sbin/ctld/kernel.c
@@ -700,13 +700,16 @@ kernel_listen(struct addrinfo *ai, bool iser, int portal_id)
}
void
-kernel_accept(int *connection_id, int *portal_id)
+kernel_accept(int *connection_id, int *portal_id,
+ struct sockaddr *client_sa, socklen_t *client_salen)
{
struct ctl_iscsi req;
+ struct sockaddr_storage ss;
bzero(&req, sizeof(req));
req.type = CTL_ISCSI_ACCEPT;
+ req.data.accept.initiator_addr = (struct sockaddr *)&ss;
if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1)
log_err(1, "error issuing CTL_ISCSI ioctl");
@@ -718,6 +721,8 @@ kernel_accept(int *connection_id, int *portal_id)
*connection_id = req.data.accept.connection_id;
*portal_id = req.data.accept.portal_id;
+ *client_salen = req.data.accept.initiator_addrlen;
+ memcpy(client_sa, &ss, *client_salen);
}
void
OpenPOWER on IntegriCloud