src/config/network.rs: use a simple String for comments
This commit is contained in:
parent
96d9478668
commit
8a6b86b8a7
@ -126,12 +126,12 @@ pub enum DeletableProperty {
|
|||||||
optional: true,
|
optional: true,
|
||||||
},
|
},
|
||||||
comments_v4: {
|
comments_v4: {
|
||||||
description: "Comments (inet)",
|
description: "Comments (inet, may span multiple lines)",
|
||||||
type: String,
|
type: String,
|
||||||
optional: true,
|
optional: true,
|
||||||
},
|
},
|
||||||
comments_v6: {
|
comments_v6: {
|
||||||
description: "Comments (inet6)",
|
description: "Comments (inet5, may span multiple lines)",
|
||||||
type: String,
|
type: String,
|
||||||
optional: true,
|
optional: true,
|
||||||
},
|
},
|
||||||
@ -221,8 +221,8 @@ pub fn update_interface(
|
|||||||
DeletableProperty::gateway_v6 => { interface.gateway_v6 = None; },
|
DeletableProperty::gateway_v6 => { interface.gateway_v6 = None; },
|
||||||
DeletableProperty::method_v4 => { interface.method_v4 = None; },
|
DeletableProperty::method_v4 => { interface.method_v4 = None; },
|
||||||
DeletableProperty::method_v6 => { interface.method_v6 = None; },
|
DeletableProperty::method_v6 => { interface.method_v6 = None; },
|
||||||
DeletableProperty::comments_v4 => { interface.comments_v4 = Vec::new(); },
|
DeletableProperty::comments_v4 => { interface.comments_v4 = None; },
|
||||||
DeletableProperty::comments_v6 => { interface.comments_v6 = Vec::new(); },
|
DeletableProperty::comments_v6 => { interface.comments_v6 = None; },
|
||||||
DeletableProperty::mtu => { interface.mtu = None; },
|
DeletableProperty::mtu => { interface.mtu = None; },
|
||||||
DeletableProperty::auto => { interface.auto = false; },
|
DeletableProperty::auto => { interface.auto = false; },
|
||||||
DeletableProperty::bridge_ports => { interface.set_bridge_ports(Vec::new())?; }
|
DeletableProperty::bridge_ports => { interface.set_bridge_ports(Vec::new())?; }
|
||||||
@ -266,13 +266,8 @@ pub fn update_interface(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(comments) = comments_v4 {
|
if comments_v4.is_some() { interface.comments_v4 = comments_v4; }
|
||||||
interface.comments_v4 = comments.lines().map(String::from).collect();
|
if comments_v6.is_some() { interface.comments_v6 = comments_v6; }
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(comments) = comments_v6 {
|
|
||||||
interface.comments_v6 = comments.lines().map(String::from).collect();
|
|
||||||
}
|
|
||||||
|
|
||||||
network::save_config(&config)?;
|
network::save_config(&config)?;
|
||||||
|
|
||||||
|
@ -587,20 +587,14 @@ pub const NETWORK_INTERFACE_LIST_SCHEMA: Schema = ArraySchema::new(
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
comments_v4: {
|
comments_v4: {
|
||||||
description: "Comments (inet)",
|
description: "Comments (inet, may span multiple lines)",
|
||||||
type: Array,
|
type: String,
|
||||||
items: {
|
optional: true,
|
||||||
description: "Comment line.",
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
comments_v6: {
|
comments_v6: {
|
||||||
description: "Comments (inet6)",
|
description: "Comments (inet6, may span multiple lines)",
|
||||||
type: Array,
|
type: String,
|
||||||
items: {
|
optional: true,
|
||||||
description: "Comment line.",
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
bridge_ports: {
|
bridge_ports: {
|
||||||
schema: NETWORK_INTERFACE_LIST_SCHEMA,
|
schema: NETWORK_INTERFACE_LIST_SCHEMA,
|
||||||
@ -645,10 +639,10 @@ pub struct Interface {
|
|||||||
#[serde(skip_serializing_if="Vec::is_empty")]
|
#[serde(skip_serializing_if="Vec::is_empty")]
|
||||||
pub options_v6: Vec<String>,
|
pub options_v6: Vec<String>,
|
||||||
|
|
||||||
#[serde(skip_serializing_if="Vec::is_empty")]
|
#[serde(skip_serializing_if="Option::is_none")]
|
||||||
pub comments_v4: Vec<String>,
|
pub comments_v4: Option<String>,
|
||||||
#[serde(skip_serializing_if="Vec::is_empty")]
|
#[serde(skip_serializing_if="Option::is_none")]
|
||||||
pub comments_v6: Vec<String>,
|
pub comments_v6: Option<String>,
|
||||||
|
|
||||||
#[serde(skip_serializing_if="Option::is_none")]
|
#[serde(skip_serializing_if="Option::is_none")]
|
||||||
/// Maximum Transmission Unit
|
/// Maximum Transmission Unit
|
||||||
|
@ -32,8 +32,8 @@ impl Interface {
|
|||||||
gateway_v6: None,
|
gateway_v6: None,
|
||||||
options_v4: Vec::new(),
|
options_v4: Vec::new(),
|
||||||
options_v6: Vec::new(),
|
options_v6: Vec::new(),
|
||||||
comments_v4: Vec::new(),
|
comments_v4: None,
|
||||||
comments_v6: Vec::new(),
|
comments_v6: None,
|
||||||
mtu: None,
|
mtu: None,
|
||||||
bridge_ports: None,
|
bridge_ports: None,
|
||||||
bond_slaves: None,
|
bond_slaves: None,
|
||||||
@ -166,8 +166,10 @@ impl Interface {
|
|||||||
writeln!(w, " {}", option)?;
|
writeln!(w, " {}", option)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
for comment in &self.comments_v4 {
|
if let Some(ref comments) = self.comments_v4 {
|
||||||
writeln!(w, "#4{}", comment)?;
|
for comment in comments.lines() {
|
||||||
|
writeln!(w, "#{}", comment)?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -188,8 +190,10 @@ impl Interface {
|
|||||||
writeln!(w, " {}", option)?;
|
writeln!(w, " {}", option)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
for comment in &self.comments_v6 {
|
if let Some(ref comments) = self.comments_v6 {
|
||||||
writeln!(w, "#6{}", comment)?;
|
for comment in comments.lines() {
|
||||||
|
writeln!(w, "#{}", comment)?;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
@ -220,8 +224,8 @@ impl Interface {
|
|||||||
bond_slaves: _bond_slaves,
|
bond_slaves: _bond_slaves,
|
||||||
} => {
|
} => {
|
||||||
method_v4 == method_v6
|
method_v4 == method_v6
|
||||||
&& comments_v4.is_empty()
|
&& comments_v4.is_none()
|
||||||
&& comments_v6.is_empty()
|
&& comments_v6.is_none()
|
||||||
&& options_v4.is_empty()
|
&& options_v4.is_empty()
|
||||||
&& options_v6.is_empty()
|
&& options_v6.is_empty()
|
||||||
}
|
}
|
||||||
|
@ -182,9 +182,15 @@ impl <R: BufRead> NetworkParser<R> {
|
|||||||
Token::Comment => {
|
Token::Comment => {
|
||||||
let comment = self.eat(Token::Comment)?;
|
let comment = self.eat(Token::Comment)?;
|
||||||
if !address_family_v4 && address_family_v6 {
|
if !address_family_v4 && address_family_v6 {
|
||||||
interface.comments_v6.push(comment);
|
let mut comments = interface.comments_v6.take().unwrap_or(String::new());
|
||||||
|
if !comments.is_empty() { comments.push('\n'); }
|
||||||
|
comments.push_str(&comment);
|
||||||
|
interface.comments_v6 = Some(comments);
|
||||||
} else {
|
} else {
|
||||||
interface.comments_v4.push(comment);
|
let mut comments = interface.comments_v4.take().unwrap_or(String::new());
|
||||||
|
if !comments.is_empty() { comments.push('\n'); }
|
||||||
|
comments.push_str(&comment);
|
||||||
|
interface.comments_v4 = Some(comments);
|
||||||
}
|
}
|
||||||
self.eat(Token::Newline)?;
|
self.eat(Token::Newline)?;
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user