diff --git a/include/iscsi-private.h b/include/iscsi-private.h index 9e5f5ef..fef0cfc 100644 --- a/include/iscsi-private.h +++ b/include/iscsi-private.h @@ -391,6 +391,7 @@ struct iscsi_transport { int (*connect)(struct iscsi_context *iscsi, union socket_address *sa, int ai_family); int (*queue_pdu)(struct iscsi_context *iscsi, struct iscsi_pdu *pdu); struct iscsi_pdu* (*new_pdu)(struct iscsi_context *iscsi, size_t size); + int (*disconnect)(struct iscsi_context *iscsi); }; struct tcp_transport { diff --git a/lib/socket.c b/lib/socket.c index 71a715c..d72c3e8 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -367,8 +367,8 @@ iscsi_connect_async(struct iscsi_context *iscsi, const char *portal, return 0; } -int -iscsi_disconnect(struct iscsi_context *iscsi) +static int +iscsi_tcp_disconnect(struct iscsi_context *iscsi) { if (iscsi->fd == -1) { iscsi_set_error(iscsi, "Trying to disconnect " @@ -390,6 +390,12 @@ iscsi_disconnect(struct iscsi_context *iscsi) return 0; } +int +iscsi_disconnect(struct iscsi_context *iscsi) +{ + return iscsi->t->disconnect(iscsi); +} + int iscsi_get_fd(struct iscsi_context *iscsi) { @@ -1058,6 +1064,7 @@ void iscsi_init_tcp_transport(struct iscsi_context *iscsi) iscsi->t->connect = iscsi_tcp_connect; iscsi->t->queue_pdu = iscsi_tcp_queue_pdu; iscsi->t->new_pdu = iscsi_tcp_new_pdu; + iscsi->t->disconnect = iscsi_tcp_disconnect; return; }