[][src]Crate nbdkit

Rust bindings to NBDKit.

NBDKit is a toolkit for building Network Block Device servers.

https://github.com/libguestfs/nbdkit

To use nbdkit, build your project as a cdylib. Define your plugin by implementing Server, and then register it with plugin!. See ramdisk.rs in the source code for a complete example.

#[derive(Default)]
struct MyPlugin {
    // ...
}
impl Server for MyPlugin {
    fn get_size(&self) -> Result<i64> {
        // ...
    }

    fn name() -> &'static str {
        "my_plugin"
    }

    fn open(_readonly: bool) -> Box<dyn Server> {
        Box::new(MyPlugin::default())
    }

    fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<()> {
        // ...
    }
}
plugin!(MyPlugin {});

Macros

plugin

Register your plugin with NBDKit.

Structs

Error

The error type used by Result.

ExtentHandle

Used by Server::extents to report extents to the client

Flags

Flags used by multiple Server methods

Enums

CacheFlags

Return values for Server::can_cache

ExtentType

Used by Server::extents to report extents to the client

FuaFlags

Return values for Server::can_fua

SockAddrnix

Represents a socket address

ThreadModel

A plugin's maximum thread safety model

Traits

Server

Define the entry point for your plugin.

Functions

export_name

Return the optional NBD export name if one was negotiated with the current client

is_stdio_safe

Is it safe to interact with stdin and stdout during the configuration phase?

peernamenix

Return the peer (client) address, if available.

shutdown

Request nbdkit to asynchronously and safely shutdown the server.

sockaddr_storage_to_addrnix

Return the appropriate SockAddr type from a sockaddr_storage of a certain size. In C this would usually be done by casting. The len argument should be the number of bytes in the sockaddr_storage that are actually allocated and valid. It must be at least as large as all the useful parts of the structure. Note that in the case of a sockaddr_un, len need not include the terminating null.

Type Definitions

Result

The Result type returned by all Server callbacks.