diff --git a/networkmanager/src/settings/connection.rs b/networkmanager/src/settings/connection.rs index 6a43690..371282a 100644 --- a/networkmanager/src/settings/connection.rs +++ b/networkmanager/src/settings/connection.rs @@ -55,6 +55,57 @@ macro_rules! derive_value_build { }; } +#[derive(Debug, Default, Builder, Clone)] +pub struct Settings { + #[builder(setter(strip_option))] + pub connection: Option, + #[builder(setter(strip_option))] + pub ethernet: Option, + #[builder(setter(strip_option))] + pub wifi: Option, + #[builder(setter(strip_option))] + pub bluetooth: Option, + #[builder(setter(strip_option))] + pub ipv4: Option, + #[builder(setter(strip_option))] + pub ipv6: Option, + #[builder(setter(strip_option))] + pub proxy: Option, +} + +impl Settings { + pub fn build( + &self, + ) -> std::collections::HashMap< + String, + std::collections::HashMap>, + > { + let mut out = std::collections::HashMap::new(); + if let Some(val) = &self.connection { + out.insert("connection".into(), val.build()); + } + if let Some(val) = &self.ethernet { + out.insert("802-3-ethernet".into(), val.build()); + } + if let Some(val) = &self.wifi { + out.insert("802-11-wireless".into(), val.build()); + } + if let Some(val) = &self.bluetooth { + out.insert("bluetooth".into(), val.build()); + } + if let Some(val) = &self.ipv4 { + out.insert("ipv4".into(), val.build()); + } + if let Some(val) = &self.ipv6 { + out.insert("ipv6".into(), val.build()); + } + if let Some(val) = &self.proxy { + out.insert("proxy".into(), val.build()); + } + out + } +} + derive_value_build!( ConnectionSettings, (auth_retries("auth-retries"): i32),