Deleted Added
full compact
kernel.c (265507) kernel.c (265509)
1/*-
2 * Copyright (c) 2003, 2004 Silicon Graphics International Corp.
3 * Copyright (c) 1997-2007 Kenneth D. Merry
4 * Copyright (c) 2012 The FreeBSD Foundation
5 * All rights reserved.
6 *
7 * Portions of this software were developed by Edward Tomasz Napierala
8 * under sponsorship from the FreeBSD Foundation.

--- 18 unchanged lines hidden (view full) ---

27 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 * POSSIBILITY OF SUCH DAMAGES.
34 *
1/*-
2 * Copyright (c) 2003, 2004 Silicon Graphics International Corp.
3 * Copyright (c) 1997-2007 Kenneth D. Merry
4 * Copyright (c) 2012 The FreeBSD Foundation
5 * All rights reserved.
6 *
7 * Portions of this software were developed by Edward Tomasz Napierala
8 * under sponsorship from the FreeBSD Foundation.

--- 18 unchanged lines hidden (view full) ---

27 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
33 * POSSIBILITY OF SUCH DAMAGES.
34 *
35 * $FreeBSD: stable/10/usr.sbin/ctld/kernel.c 265507 2014-05-07 07:29:39Z trasz $
35 * $FreeBSD: stable/10/usr.sbin/ctld/kernel.c 265509 2014-05-07 07:32:45Z trasz $
36 */
37
38#include <sys/ioctl.h>
39#include <sys/types.h>
40#include <sys/stat.h>
41#include <sys/param.h>
42#include <sys/linker.h>
43#include <sys/queue.h>

--- 573 unchanged lines hidden (view full) ---

617 req.data.handoff.data_digest = CTL_ISCSI_DIGEST_CRC32C;
618 req.data.handoff.cmdsn = conn->conn_cmdsn;
619 req.data.handoff.statsn = conn->conn_statsn;
620 req.data.handoff.max_recv_data_segment_length =
621 conn->conn_max_data_segment_length;
622 req.data.handoff.max_burst_length = conn->conn_max_burst_length;
623 req.data.handoff.immediate_data = conn->conn_immediate_data;
624
36 */
37
38#include <sys/ioctl.h>
39#include <sys/types.h>
40#include <sys/stat.h>
41#include <sys/param.h>
42#include <sys/linker.h>
43#include <sys/queue.h>

--- 573 unchanged lines hidden (view full) ---

617 req.data.handoff.data_digest = CTL_ISCSI_DIGEST_CRC32C;
618 req.data.handoff.cmdsn = conn->conn_cmdsn;
619 req.data.handoff.statsn = conn->conn_statsn;
620 req.data.handoff.max_recv_data_segment_length =
621 conn->conn_max_data_segment_length;
622 req.data.handoff.max_burst_length = conn->conn_max_burst_length;
623 req.data.handoff.immediate_data = conn->conn_immediate_data;
624
625 if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1)
625 if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1) {
626 log_err(1, "error issuing CTL_ISCSI ioctl; "
627 "dropping connection");
626 log_err(1, "error issuing CTL_ISCSI ioctl; "
627 "dropping connection");
628 }
628
629
629 if (req.status != CTL_ISCSI_OK)
630 if (req.status != CTL_ISCSI_OK) {
630 log_errx(1, "error returned from CTL iSCSI handoff request: "
631 "%s; dropping connection", req.error_str);
631 log_errx(1, "error returned from CTL iSCSI handoff request: "
632 "%s; dropping connection", req.error_str);
633 }
632}
633
634int
635kernel_port_on(void)
636{
637 struct ctl_port_entry entry;
638 int error;
639

--- 28 unchanged lines hidden (view full) ---

668 return (-1);
669 }
670
671 return (0);
672}
673
674#ifdef ICL_KERNEL_PROXY
675void
634}
635
636int
637kernel_port_on(void)
638{
639 struct ctl_port_entry entry;
640 int error;
641

--- 28 unchanged lines hidden (view full) ---

670 return (-1);
671 }
672
673 return (0);
674}
675
676#ifdef ICL_KERNEL_PROXY
677void
676kernel_listen(struct addrinfo *ai, bool iser)
678kernel_listen(struct addrinfo *ai, bool iser, int portal_id)
677{
678 struct ctl_iscsi req;
679
680 bzero(&req, sizeof(req));
681
682 req.type = CTL_ISCSI_LISTEN;
683 req.data.listen.iser = iser;
684 req.data.listen.domain = ai->ai_family;
685 req.data.listen.socktype = ai->ai_socktype;
686 req.data.listen.protocol = ai->ai_protocol;
687 req.data.listen.addr = ai->ai_addr;
688 req.data.listen.addrlen = ai->ai_addrlen;
679{
680 struct ctl_iscsi req;
681
682 bzero(&req, sizeof(req));
683
684 req.type = CTL_ISCSI_LISTEN;
685 req.data.listen.iser = iser;
686 req.data.listen.domain = ai->ai_family;
687 req.data.listen.socktype = ai->ai_socktype;
688 req.data.listen.protocol = ai->ai_protocol;
689 req.data.listen.addr = ai->ai_addr;
690 req.data.listen.addrlen = ai->ai_addrlen;
691 req.data.listen.portal_id = portal_id;
689
692
690 if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1) {
693 if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1)
691 log_err(1, "error issuing CTL_ISCSI ioctl");
694 log_err(1, "error issuing CTL_ISCSI ioctl");
692 return;
693 }
694
695 if (req.status != CTL_ISCSI_OK) {
696 log_errx(1, "error returned from CTL iSCSI listen: %s",
697 req.error_str);
698 }
699}
700
695
696 if (req.status != CTL_ISCSI_OK) {
697 log_errx(1, "error returned from CTL iSCSI listen: %s",
698 req.error_str);
699 }
700}
701
701int
702kernel_accept(void)
702void
703kernel_accept(int *connection_id, int *portal_id)
703{
704 struct ctl_iscsi req;
705
706 bzero(&req, sizeof(req));
707
708 req.type = CTL_ISCSI_ACCEPT;
709
704{
705 struct ctl_iscsi req;
706
707 bzero(&req, sizeof(req));
708
709 req.type = CTL_ISCSI_ACCEPT;
710
710 if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1) {
711 log_warn("error issuing CTL_ISCSI ioctl");
712 return (0);
713 }
711 if (ioctl(ctl_fd, CTL_ISCSI, &req) == -1)
712 log_err(1, "error issuing CTL_ISCSI ioctl");
714
715 if (req.status != CTL_ISCSI_OK) {
713
714 if (req.status != CTL_ISCSI_OK) {
716 log_warnx("error returned from CTL iSCSI accept: %s",
715 log_errx(1, "error returned from CTL iSCSI accept: %s",
717 req.error_str);
716 req.error_str);
718 return (0);
719 }
720
717 }
718
721 return (req.data.accept.connection_id);
719 *connection_id = req.data.accept.connection_id;
720 *portal_id = req.data.accept.portal_id;
722}
723
724void
725kernel_send(struct pdu *pdu)
726{
727 struct ctl_iscsi req;
728
729 bzero(&req, sizeof(req));

--- 79 unchanged lines hidden ---
721}
722
723void
724kernel_send(struct pdu *pdu)
725{
726 struct ctl_iscsi req;
727
728 bzero(&req, sizeof(req));

--- 79 unchanged lines hidden ---