LIBISCSI(3) | Library Functions Manual | LIBISCSI(3)

# NAME

`libiscsi` —
iSCSI network storage protocol implementation

# LIBRARY

iSCSI protocol library (libiscsi, -liscsi)

# SYNOPSIS

`#include <iscsi.h>`

int
`iscsi_target_set_defaults`(iscsi_target_t *target);

int
`iscsi_target_start`(iscsi_target_t *target);

int
`iscsi_target_listen`(iscsi_target_t *target);

int
`iscsi_target_shutdown`(iscsi_target_t *target);

void
`iscsi_target_write_pidfile`(const char *filename);

int
`iscsi_target_setvar`(iscsi_target_t *target, const char *name, const char *value);

char *
`iscsi_target_getvar`(iscsi_target_t *target, const char *name);

int
`iscsi_initiator_set_defaults`(iscsi_initiator_t *initiator);

int
`iscsi_initiator_start`(iscsi_initiator_t *initiator);

int
`iscsi_initiator_discover`(iscsi_initiator_t *initiator, char *x, uint64_t a, int b);

int
`iscsi_initiator_shutdown`(iscsi_initiator_t *initiator);

int
`iscsi_initiator_setvar`(iscsi_initiator_t *initiator, const char *name, const char *value);

char *
`iscsi_initiator_getvar`(iscsi_initiator_t *initiator, const char *name);

# DESCRIPTION

`libiscsi` is a library interface to the iSCSI target and initiator. This conforms to IETF RFC 3720. The corresponding command line utilities for `libiscsi` are iscsi-initiator(8) and iscsi-target(8).

In normal operation, a process acting as a target (i.e. presenting storage to the network) will call `iscsi_target_set_defaults`() and will then set various values using the `iscsi_target_setvar`() function. The value of a variable can be retrieved at any time using the `iscsi_target_getvar`() function. When all of the variables have been set, the `iscsi_target_start`() function is called, and the block storage will be served up by the process.

A useful illustration of the use of these functions can be found in the source code to the iscsi-target(8) utility.

The `libiscsi` library also provides an implementation of the client end of the iSCSI subsystem, which is known as the initiator. The process acting as an initiator will first call the `iscsi_initiator_set_defaults`() function, to set default values for the initiator variables. Once all the values have been set to the user preferences using the `iscsi_initiator_setvar`() function, then the `iscsi_initiator_start`() function is called.

The `libiscsi` library can be used to perform iSCSI device discovery by calling the `iscsi_initiator_discovery`() function. This will return a list of all the iSCSI targets which are serving up block storage according to the variables which have already been set.

# SEE ALSO

iscsi-initiator(8), iscsi-target(8)

# HISTORY

The `libiscsi` library first appeared in NetBSD 4.0. This programmatic interface to the iSCSI subsystem first appeared in NetBSD 6.0.

# AUTHORS

Alistair Crooks <agc@NetBSD.org>.

February 19, 2011 | NetBSD 9.5