aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2024-01-30 19:37:13 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2024-01-30 19:37:13 +0100
commit68e5ce4926409dc92b8d4d548fae0aac6d9f96c2 (patch)
tree5daa3521673d29c2070f1b2d8ed6cb7635d1c372
parent0ee443e1c4a2140a48a51acc4dc1b837e7e4b0e2 (diff)
fix address information being lost on clean shutdown
Address preservation is now attempted even across clean reboots. Forcing it to change now requires manual intervention. This fixes a regression introduced by clean terminations.
-rw-r--r--src/main.rs17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index b5e7876..f5e91e3 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -33,13 +33,14 @@ async fn main() -> Result<()> {
.write(true)
.create(true)
.truncate(false)
- .open(rsdsl_ip_config::LOCATION)?;
+ .open(rsdsl_ip_config::LOCATION_LAST)?;
serde_json::from_reader(&mut ds_config_file).unwrap_or_else(|_| {
println!("[info] no valid ds config to reuse");
DsConfig::default()
})
};
+ let mut ds_config_last = ds_config;
let (v4_tx, mut v4_rx) = mpsc::unbounded_channel();
let (v6_tx, mut v6_rx) = mpsc::unbounded_channel();
@@ -64,6 +65,13 @@ async fn main() -> Result<()> {
let mut ds_config_file = File::create(rsdsl_ip_config::LOCATION)?;
serde_json::to_writer_pretty(&mut ds_config_file, &ds_config)?;
+ if ds_config.v4.is_some() {
+ ds_config_last.v4 = ds_config.v4;
+
+ let mut ds_config_last_file = File::create(rsdsl_ip_config::LOCATION_LAST)?;
+ serde_json::to_writer_pretty(&mut ds_config_last_file, &ds_config_last)?;
+ }
+
inform();
if let Some(v4) = ds_config.v4 {
@@ -78,6 +86,13 @@ async fn main() -> Result<()> {
let mut ds_config_file = File::create(rsdsl_ip_config::LOCATION)?;
serde_json::to_writer_pretty(&mut ds_config_file, &ds_config)?;
+ if ds_config.v6.is_some() {
+ ds_config_last.v6 = ds_config.v6;
+
+ let mut ds_config_last_file = File::create(rsdsl_ip_config::LOCATION_LAST)?;
+ serde_json::to_writer_pretty(&mut ds_config_last_file, &ds_config_last)?;
+ }
+
inform();
if let Some(v6) = ds_config.v6 {