1
1
#ifndef __TRANSPORT_H
2
2
#define __TRANSPORT_H
4
#include <sys/socket.h>
7
struct iscsi_connection;
4
10
struct iscsi_transport {
11
struct list_head iscsi_transport_siblings;
8
17
int (*ep_init) (void);
9
size_t (*ep_read) (int ep, void *buf, size_t nbytes);
10
size_t (*ep_write_begin) (int ep, void *buf, size_t nbytes);
11
void (*ep_write_end)(int ep);
12
size_t (*ep_close) (int ep);
13
int (*ep_show) (int ep, char *buf, int rest);
18
void (*ep_exit) (void);
19
int (*ep_login_complete)(struct iscsi_connection *conn);
20
struct iscsi_task *(*alloc_task)(struct iscsi_connection *conn,
22
void (*free_task)(struct iscsi_task *task);
23
size_t (*ep_read)(struct iscsi_connection *conn, void *buf,
25
size_t (*ep_write_begin)(struct iscsi_connection *conn, void *buf,
27
void (*ep_write_end)(struct iscsi_connection *conn);
28
int (*ep_rdma_read)(struct iscsi_connection *conn);
29
int (*ep_rdma_write)(struct iscsi_connection *conn);
30
size_t (*ep_close)(struct iscsi_connection *conn);
31
void (*ep_release)(struct iscsi_connection *conn);
33
int (*ep_show)(struct iscsi_connection *conn, char *buf, int rest);
34
void (*ep_event_modify)(struct iscsi_connection *conn, int events);
35
void *(*alloc_data_buf)(struct iscsi_connection *conn, size_t sz);
36
void (*free_data_buf)(struct iscsi_connection *conn, void *buf);
37
int (*ep_getsockname)(struct iscsi_connection *conn,
38
struct sockaddr *sa, socklen_t *len);
39
int (*ep_getpeername)(struct iscsi_connection *conn,
40
struct sockaddr *sa, socklen_t *len);
16
extern struct iscsi_transport iscsi_tcp;
43
extern int iscsi_transport_register(struct iscsi_transport *);