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).