NBDKit - Man Page

Interface between plugins written in OCaml and the nbdkit server.

Module

Module   NBDKit

Documentation

Module NBDKit
: sig end

Interface between plugins written in OCaml and the nbdkit server.

See also nbdkit-ocaml-plugin(3)

See also nbdkit-plugin(3)

Flags passed from the server to various callbacks

type flags = flag list

type flag =
| May_trim
| FUA
| Req_one

type fua_flag =
| FuaNone
| FuaEmulate
| FuaNative

type cache_flag =
| CacheNone
| CacheEmulate
| CacheNop

Other types

type extent = {
offset : int64 ;
length : int64 ;
is_hole : bool ;
is_zero : bool ;
}

The type of the extent list returned by ~extents

type export = {
name : string ;
description : string option ;
}

The type of the export list returned by ~list_exports

type thread_model =
| THREAD_MODEL_SERIALIZE_CONNECTIONS
| THREAD_MODEL_SERIALIZE_ALL_REQUESTS
| THREAD_MODEL_SERIALIZE_REQUESTS
| THREAD_MODEL_PARALLEL

The type of the thread model returned by ~thread_model

Buffer used for pread and pwrite

type buf = (char, Stdlib.Bigarray.int8_unsigned_elt, Stdlib.Bigarray.c_layout) Stdlib.Bigarray.Array1.t

Define a convenient type name for the buffer type passed to the ~pread and ~pwrite methods of NBDKit.register_plugin .

As well as NBDKit.buf_len and the blitting functions below, usual Bigarray.Array1 functions can be used.

val buf_len : buf -> int

Return the length of the ~pread and ~pwrite NBDKit.buf parameter.

val blit_string_to_buf : string -> int -> buf -> int -> int -> unit

blit_string_to_buf src src_pos buf buf_pos len copies len bytes from string src+src_pos to buf+buf_pos

val blit_bytes_to_buf : bytes -> int -> buf -> int -> int -> unit

The same as above but the source is bytes

val blit_buf_to_bytes : buf -> int -> bytes -> int -> int -> unit

blit_buf_to_bytes buf buf_pos dst dst_pos len copies len bytes from buf+buf_pos to bytes dst+dst_pos

Plugin

val register_plugin : name:string -> ?longname:string -> ?version:string -> ?description:string -> ?load:(unit -> unit) -> ?get_ready:(unit -> unit) -> ?after_fork:(unit -> unit) -> ?cleanup:(unit -> unit) -> ?unload:(unit -> unit) -> ?config:(string -> string -> unit) -> ?config_complete:(unit -> unit) -> ?config_help:string -> ?thread_model:(unit -> thread_model) -> ?magic_config_key:string -> ?preconnect:(bool -> unit) -> open_connection:(bool -> 'a) -> ?close:('a -> unit) -> get_size:('a -> int64) -> ?export_description:('a -> string) -> ?block_size:('a -> int * int * int64) -> ?can_cache:('a -> cache_flag) -> ?can_extents:('a -> bool) -> ?can_fast_zero:('a -> bool) -> ?can_flush:('a -> bool) -> ?can_fua:('a -> fua_flag) -> ?can_multi_conn:('a -> bool) -> ?can_trim:('a -> bool) -> ?can_write:('a -> bool) -> ?can_zero:('a -> bool) -> ?is_rotational:('a -> bool) -> pread:('a -> buf -> int64 -> flags -> unit) -> ?pwrite:('a -> buf -> int64 -> flags -> unit) -> ?flush:('a -> flags -> unit) -> ?trim:('a -> int64 -> int64 -> flags -> unit) -> ?zero:('a -> int64 -> int64 -> flags -> unit) -> ?extents:('a -> int64 -> int64 -> flags -> extent list) -> ?cache:('a -> int64 -> int64 -> flags -> unit) -> ?dump_plugin:(unit -> unit) -> ?list_exports:(bool -> bool -> export list) -> ?default_export:(bool -> bool -> string) -> unit -> unit

Register the plugin with nbdkit.

The 'a parameter is the handle type returned by your ~open_connection method and passed back to all connected calls.

Errors and debugging

val set_error : Unix.error -> unit

Set the errno returned over the NBD protocol to the client.

Note that the NBD protocol only supports the following errno values: Unix.EROFS , EPERM , EIO , ENOMEM , ENOSPC , ESHUTDOWN , ENOTSUP , EOVERFLOW and EINVAL . Any other errno will be translated to EINVAL .

See also nbdkit_set_error(3)

val debug : ('a, unit, string, unit) Stdlib.format4 -> 'a

Print a debug message when nbdkit is in verbose mode.

See also nbdkit_debug(3)

Parsing and configuration

val parse_size : string -> int64

Parse size parameter.

Raises Invalid_argument on error.  The actual error is sent to the nbdkit error log and is not available from the OCaml code. It is usually best to let the exception escape.

See also nbdkit_parse_size(3)

val parse_probability : string -> string -> float

Parse probability parameter.

Raises Invalid_argument on error.

See also nbdkit_parse_probability(3)

val parse_bool : string -> bool

Parse boolean parameter.

Raises Invalid_argument on error.

See also nbdkit_parse_bool(3)

val parse_delay : string -> string -> int * int

Parse delay parameter.

Raises Invalid_argument on error.

See also nbdkit_parse_delay(3)

val read_password : string -> string

Read a password.

Raises Invalid_argument on error.

See also nbdkit_read_password(3)

val realpath : string -> string

Returns the canonical path from a path parameter.

See also nbdkit_realpath(3)

val stdio_safe : unit -> bool

Returns true if it is safe to interact with stdin and stdout during the configuration phase.

See also nbdkit_stdio_safe(3)

Shutdown and client disconnect

val shutdown : unit -> unit

Requests the server shut down.

See also nbdkit_shutdown(3)

val disconnect : bool -> unit

Requests disconnecting current client.

See also nbdkit_disconnect(3)

Client information

val export_name : unit -> string

Returns the name of the export as requested by the client.

See also nbdkit_export_name(3)

val is_tls : unit -> bool

Returns true if the client completed TLS authentication.

See also nbdkit_is_tls(3)

val peer_name : unit -> Unix.sockaddr

Returns the socket address of the client.

See also nbdkit_peer_name(3)

val peer_pid : unit -> int64

Returns the process ID of the client.

See also nbdkit_peer_pid(3)

val peer_uid : unit -> int64

Returns the user ID of the client.

See also nbdkit_peer_uid(3)

val peer_gid : unit -> int64

Returns the group ID of the client.

See also nbdkit_peer_gid(3)

val peer_security_context : unit -> string

Returns the security context or label of the client.

See also nbdkit_peer_security_context(3)

val peer_tls_dn : unit -> string

val peer_tls_issuer_dn : unit -> string

Returns the client TLS X.509 Distinguished Name

See also nbdkit_peer_tls_dn(3)

See also nbdkit_peer_tls_issuer_dn(3)

Sleeping

val nanosleep : int -> int -> unit

Sleeps for seconds and nanoseconds.

See also nbdkit_nanosleep(3)

Version

val version : unit -> string

Returns the version of nbdkit that the plugin was compiled with.

val api_version : unit -> int

Returns the nbdkit API version used by the plugin.

See also The description of NBDKIT_API_VERSION in nbdkit-plugin(3).

Referenced By

nbdkit-ocaml-plugin(3), nbdkit-release-notes-1.24(1).

2024-10-14 OCamldoc