diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-12 17:36:09 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-11-12 17:36:09 +0100 |
commit | faaf6e36f86e530f09fe132613ba5d78d077112a (patch) | |
tree | 6b05ce372c6cca4d1f76d2ca5b96f6805c2a0609 | |
parent | 534105b6b2308394bde32c9894b567e98c1f00f2 (diff) |
inform other services of lease acquiry and expiry
-rw-r--r-- | src/error.rs | 2 | ||||
-rw-r--r-- | src/main.rs | 25 |
2 files changed, 25 insertions, 2 deletions
diff --git a/src/error.rs b/src/error.rs index b58678a..d67a9fd 100644 --- a/src/error.rs +++ b/src/error.rs @@ -6,6 +6,8 @@ use thiserror::Error; #[derive(Debug, Error)] pub enum Error { + #[error("lease has been obtained but doesn't exist")] + LeaseNotFound, #[error("no client duid")] NoClientId, #[error("no hexdump data")] diff --git a/src/main.rs b/src/main.rs index 1fc51a7..edcd7c6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -114,9 +114,30 @@ async fn main() -> Result<()> { let is_opened = *dhcp6c_rx.borrow_and_update(); if is_opened { - todo!("write lease + inform") + let pd_config = dhcp6.lease.clone().ok_or(Error::LeaseNotFound)?; + + let mut file = File::create(rsdsl_pd_config::LOCATION)?; + serde_json::to_writer_pretty(&mut file, &pd_config)?; + + inform(); + + println!( + "[info] <> obtain lease {}/{} t1={} t2={} preflft={} validlft={} dns1={} dns2={} aftr={:?}", + pd_config.prefix, + pd_config.len, + pd_config.t1, + pd_config.t2, + pd_config.preflft, + pd_config.validlft, + pd_config.dns1, + pd_config.dns2, + pd_config.aftr + ); } else { - todo!("del lease + inform") + fs::remove_file(rsdsl_pd_config::LOCATION)?; + inform(); + + println!("[info] <> expire"); } } |