aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-07-30 09:51:47 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-07-30 09:51:47 +0200
commit61b0a556a6e63464cc4abfb970803a28ba04f457 (patch)
treef8552da5e4471b6609f59288849fd6c3bf483b48
parentb84331379796d5344c19a8f15b3fae9a60035f42 (diff)
use default / zero configs for inactive protocols when writing ds config
-rw-r--r--src/main.rs42
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()))
+ },
+ )?;
+ }
}
}
}