diff options
author | trasz <trasz@FreeBSD.org> | 2014-05-07 07:37:55 +0000 |
---|---|---|
committer | trasz <trasz@FreeBSD.org> | 2014-05-07 07:37:55 +0000 |
commit | 21ec0cf2d04e4aa633946733cbc2771bb4ceb398 (patch) | |
tree | 58555ca5911d866052e6587412bcb42076b5e484 /usr.sbin/ctld/kernel.c | |
parent | a59839947cb5d7096df809172f3a5d5085bf9b8a (diff) | |
download | FreeBSD-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.c | 7 |
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 |