diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-30 09:51:47 +0200 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-07-30 09:51:47 +0200 |
commit | 61b0a556a6e63464cc4abfb970803a28ba04f457 (patch) | |
tree | f8552da5e4471b6609f59288849fd6c3bf483b48 | |
parent | b84331379796d5344c19a8f15b3fae9a60035f42 (diff) |
use default / zero configs for inactive protocols when writing ds config
-rw-r--r-- | src/main.rs | 42 |
1 files changed, 38 insertions, 4 deletions
diff --git a/src/main.rs b/src/main.rs index 02d7518..dea45da 100644 --- a/src/main.rs +++ b/src/main.rs @@ -475,29 +475,63 @@ fn session( } }; } else if *state == Ncp::Active { + let mut update = false; + match *ncp { Network::Ipv4 if !ipv4_active => { - write_dsconfig(config4.clone(), config6.clone())?; ipv4_active = true; + update = true; } Network::Ipv6 if !ipv6_active => { - write_dsconfig(config4.clone(), config6.clone())?; ipv6_active = true; + update = true; } _ => {} } + + if update { + write_dsconfig( + if ipv4_active { + config4.clone() + } else { + Arc::new(Mutex::new(Ipv4Config::default())) + }, + if ipv6_active { + config6.clone() + } else { + Arc::new(Mutex::new(Ipv6Config::default())) + }, + )?; + } } else if *state == Ncp::Failed { + let mut update = false; + match *ncp { Network::Ipv4 if ipv4_active => { - write_dsconfig(config4.clone(), config6.clone())?; ipv4_active = false; + update = true; } Network::Ipv6 if ipv6_active => { - write_dsconfig(config4.clone(), config6.clone())?; ipv6_active = false; + update = true; } _ => {} } + + if update { + write_dsconfig( + if ipv4_active { + config4.clone() + } else { + Arc::new(Mutex::new(Ipv4Config::default())) + }, + if ipv6_active { + config6.clone() + } else { + Arc::new(Mutex::new(Ipv6Config::default())) + }, + )?; + } } } } |