diff --git a/src/dragonball/src/api/v1/mod.rs b/src/dragonball/src/api/v1/mod.rs index 53bc5664aa..99ffd689f9 100644 --- a/src/dragonball/src/api/v1/mod.rs +++ b/src/dragonball/src/api/v1/mod.rs @@ -32,4 +32,6 @@ pub use virtio_net::VirtioConfig; feature = "vhost-net", feature = "vhost-user-net" ))] -pub use virtio_net::{Backend, NetworkInterfaceConfig, NetworkInterfaceUpdateConfig}; +pub use virtio_net::{ + Backend, NetworkInterfaceConfig, NetworkInterfaceUpdateConfig, VhostUserConfig, +}; diff --git a/src/dragonball/src/api/v1/virtio_net.rs b/src/dragonball/src/api/v1/virtio_net.rs index c17a2088f7..bfd0841453 100644 --- a/src/dragonball/src/api/v1/virtio_net.rs +++ b/src/dragonball/src/api/v1/virtio_net.rs @@ -68,6 +68,7 @@ pub struct VirtioConfig { pub allow_duplicate_mac: bool, } +/// Config for vhost-user-net device #[cfg(feature = "vhost-user-net")] #[derive(Clone, Debug, Default, Deserialize, PartialEq, Eq, Serialize)] pub struct VhostUserConfig { @@ -197,9 +198,23 @@ impl From<&NetworkInterfaceConfig> for VhostUserNetDeviceConfigInfo { fn from(value: &NetworkInterfaceConfig) -> Self { let num_queues = value .num_queues + .map(|nq| { + if nq == 0 { + vhost_user_net_dev_mgr::DEFAULT_NUM_QUEUES + } else { + nq + } + }) .unwrap_or(vhost_user_net_dev_mgr::DEFAULT_NUM_QUEUES); let queue_size = value .queue_size + .map(|qs| { + if qs == 0 { + vhost_user_net_dev_mgr::DEFAULT_QUEUE_SIZE + } else { + qs + } + }) .unwrap_or(vhost_user_net_dev_mgr::DEFAULT_QUEUE_SIZE); // It is safe because we tested the type of config before. #[allow(unreachable_patterns)]