Expand description
Rust bindings to NBDKit.
NBDKit is a toolkit for building Network Block Device servers.
https://gitlab.com/nbdkit/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) -> Result<Box<dyn Server>> {
Ok(Box::new(MyPlugin::default()))
}
fn read_at(&self, buf: &mut [u8], offset: u64) -> Result<()> {
// ...
}
}
plugin!(MyPlugin {});
Macros
- Print a debug message.
- Register your plugin with NBDKit.
Structs
- The error type used by
Result
. - Used by
Server::extents
to report extents to the client - Flags used by multiple
Server
methods
Enums
- Return values for
Server::can_cache
- Used by
Server::extents
to report extents to the client - Return values for
Server::can_fua
- A plugin’s maximum thread safety model
Traits
- Define the entry point for your plugin.
- Anything that, in C, can be cast back and forth to
sockaddr
.
Functions
- Request nbdkit to disconnect the current client.
- Return the optional NBD export name if one was negotiated with the current client
- Is it safe to interact with stdin and stdout during the configuration phase?
- Did the client complete TLS authentication?
- Parse a string as a boolean using
nbdkit_parse_bool
. - Parse a string as a probability/percentage using
nbdkit_parse_probability
. - Parse a string as a size using
nbdkit_parse_size
. - Return the peer (client) address, if available.
- Request nbdkit to asynchronously and safely shutdown the server.
Type Definitions
- The Result type returned by all
Server
callbacks.