1#- 2# SPDX-License-Identifier: BSD-2-Clause-FreeBSD 3# 4# Copyright (c) 2014 The FreeBSD Foundation 5# All rights reserved. 6# 7# This software was developed by Edward Tomasz Napierala under sponsorship 8# from the FreeBSD Foundation. 9# 10# Redistribution and use in source and binary forms, with or without 11# modification, are permitted provided that the following conditions 12# are met: 13# 1. Redistributions of source code must retain the above copyright 14# notice, this list of conditions and the following disclaimer. 15# 2. Redistributions in binary form must reproduce the above copyright 16# notice, this list of conditions and the following disclaimer in the 17# documentation and/or other materials provided with the distribution. 18# 19# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 20# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 21# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 22# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 23# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 24# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 25# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 26# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 28# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 29# SUCH DAMAGE. 30# 31# $FreeBSD$ 32# 33 34#include <sys/socket.h> 35#include <dev/iscsi/icl.h> 36 37INTERFACE icl_conn; 38 39METHOD size_t pdu_data_segment_length { 40 struct icl_conn *_ic; 41 const struct icl_pdu *_ip; 42}; 43 44METHOD int pdu_append_data { 45 struct icl_conn *_ic; 46 struct icl_pdu *_ip; 47 const void *_addr; 48 size_t _len; 49 int _flags; 50}; 51 52METHOD void pdu_get_data { 53 struct icl_conn *_ic; 54 struct icl_pdu *_ip; 55 size_t _off; 56 void *_addr; 57 size_t _len; 58}; 59 60METHOD void pdu_queue { 61 struct icl_conn *_ic; 62 struct icl_pdu *_ip; 63}; 64 65METHOD void pdu_free { 66 struct icl_conn *_ic; 67 struct icl_pdu *_ip; 68}; 69 70METHOD struct icl_pdu * new_pdu { 71 struct icl_conn *_ic; 72 int _flags; 73}; 74 75METHOD void free { 76 struct icl_conn *_ic; 77}; 78 79METHOD int handoff { 80 struct icl_conn *_ic; 81 int _fd; 82}; 83 84METHOD void close { 85 struct icl_conn *_ic; 86}; 87 88METHOD int task_setup { 89 struct icl_conn *_ic; 90 struct icl_pdu *_ip; 91 struct ccb_scsiio *_csio; 92 uint32_t *_task_tag; 93 void **_prvp; 94}; 95 96METHOD void task_done { 97 struct icl_conn *_ic; 98 void *_prv; 99}; 100 101METHOD int transfer_setup { 102 struct icl_conn *_ic; 103 union ctl_io *_io; 104 uint32_t *_transfer_tag; 105 void **_prvp; 106}; 107 108METHOD void transfer_done { 109 struct icl_conn *_ic; 110 void *_prv; 111}; 112 113# 114# The function below is only used with ICL_KERNEL_PROXY. 115# 116METHOD int connect { 117 struct icl_conn *_ic; 118 int _domain; 119 int _socktype; 120 int _protocol; 121 struct sockaddr *_from_sa; 122 struct sockaddr *_to_sa; 123}; 124