xref: /freebsd/sys/dev/iscsi/icl_conn_if.m (revision 4f52dfbb)
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