mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2024-12-22 13:45:20 +00:00
vmm: config: Implement Clone for NetConfig
The custom version duplicates any FDs that have been provided so that the validation logic used on hotplug, which takes a clone of the config, can be safely carried out. Signed-off-by: Rob Bradford <robert.bradford@intel.com>
This commit is contained in:
parent
f5084f7c65
commit
ea4a95c4f6
@ -1134,6 +1134,22 @@ impl NetConfig {
|
||||
}
|
||||
}
|
||||
|
||||
impl Clone for NetConfig {
|
||||
fn clone(&self) -> Self {
|
||||
NetConfig {
|
||||
tap: self.tap.clone(),
|
||||
vhost_socket: self.vhost_socket.clone(),
|
||||
id: self.id.clone(),
|
||||
fds: self
|
||||
.fds
|
||||
.as_ref()
|
||||
// SAFETY: We have been handed these FDs through the API
|
||||
.map(|fds| fds.iter().map(|fd| unsafe { libc::dup(*fd) }).collect()),
|
||||
..*self
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl RngConfig {
|
||||
pub fn parse(rng: &str) -> Result<Self> {
|
||||
let mut parser = OptionParser::new();
|
||||
|
@ -183,7 +183,7 @@ impl Default for MemoryConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize, Default)]
|
||||
#[derive(Clone, Copy, Debug, PartialEq, Eq, Deserialize, Serialize, Default)]
|
||||
pub enum VhostMode {
|
||||
#[default]
|
||||
Client,
|
||||
@ -248,7 +248,7 @@ impl Default for DiskConfig {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||
#[derive(Debug, PartialEq, Eq, Deserialize, Serialize)]
|
||||
pub struct NetConfig {
|
||||
#[serde(default = "default_netconfig_tap")]
|
||||
pub tap: Option<String>,
|
||||
|
Loading…
Reference in New Issue
Block a user