Trait VirtioDeviceBuilder

Source
pub trait VirtioDeviceBuilder: Sized {
    const NAME: &'static str;

    // Required method
    fn create_vhost_user_device(
        self,
        _keep_rds: &mut Vec<RawDescriptor>,
    ) -> Result<Box<dyn VhostUserDeviceBuilder>>;

    // Provided method
    fn create_jail(
        &self,
        jail_config: Option<&JailConfig>,
        virtio_transport: VirtioDeviceType,
    ) -> Result<Option<Minijail>> { ... }
}
Expand description

A trait for spawning vhost-user device instances and jails from their configuration structure.

Required Associated Constants§

Source

const NAME: &'static str

Base name of the device, as it will appear in logs.

Required Methods§

Source

fn create_vhost_user_device( self, _keep_rds: &mut Vec<RawDescriptor>, ) -> Result<Box<dyn VhostUserDeviceBuilder>>

Create a device suitable for being run as a vhost-user instance.

Provided Methods§

Source

fn create_jail( &self, jail_config: Option<&JailConfig>, virtio_transport: VirtioDeviceType, ) -> Result<Option<Minijail>>

Create a jail that is suitable to run a device.

The default implementation creates a simple jail with a seccomp policy derived from the base name of the device.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl VirtioDeviceBuilder for &NetParameters

Source§

const NAME: &'static str = "net"

Source§

fn create_jail( &self, jail_config: Option<&JailConfig>, virtio_transport: VirtioDeviceType, ) -> Result<Option<Minijail>>

Source§

fn create_vhost_user_device( self, keep_rds: &mut Vec<RawDescriptor>, ) -> Result<Box<dyn VhostUserDeviceBuilder>>

Source§

impl VirtioDeviceBuilder for &VsockConfig

Source§

const NAME: &'static str = "vhost_vsock"

Source§

fn create_vhost_user_device( self, keep_rds: &mut Vec<RawDescriptor>, ) -> Result<Box<dyn VhostUserDeviceBuilder>>

Source§

impl VirtioDeviceBuilder for &SerialParameters

For creating console virtio devices.

Source§

const NAME: &'static str = "serial"

Source§

fn create_vhost_user_device( self, keep_rds: &mut Vec<RawDescriptor>, ) -> Result<Box<dyn VhostUserDeviceBuilder>>

Source§

fn create_jail( &self, jail_config: Option<&JailConfig>, virtio_transport: VirtioDeviceType, ) -> Result<Option<Minijail>>

Implementors§

Source§

impl VirtioDeviceBuilder for DiskConfig<'_>

Source§

const NAME: &'static str = "block"