aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-03-04 18:02:12 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-03-04 18:02:12 +0100
commit73c44f339b18c29698a19b3ef91e89f01508e1a5 (patch)
treed07d97208c549cc28cc9c6f9779c4176b907dfc8
parent0949b26177418518aaa61ea488cae7c2e6183cc8 (diff)
create valid lease file if it doesn't exist yet
-rw-r--r--src/main.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs
index 694a4f7..4ef4b23 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -2,7 +2,8 @@ use dhcp4d::error::{Error, Result};
use dhcp4d::lease::{LeaseFileManager, LeaseFileManagerConfig, LeaseManager};
use dhcp4d::util::{format_client_id, local_ip};
-use std::fs::OpenOptions;
+use std::fs::{self, OpenOptions};
+use std::io::Write;
use std::mem::MaybeUninit;
use std::net::{IpAddr, SocketAddr, SocketAddrV4};
use std::sync::{Arc, Mutex};
@@ -13,6 +14,8 @@ use dhcproto::v4::{DhcpOption, Flags, Message, MessageType, Opcode, OptionCode};
use dhcproto::{Decodable, Decoder, Encodable, Encoder};
use socket2::{Domain, Socket, Type};
+const LEASE_FILE: &str = "leases.json";
+
fn main() -> Result<()> {
let config = LeaseFileManagerConfig {
range: (
@@ -23,12 +26,21 @@ fn main() -> Result<()> {
lease_time: Duration::from_secs(300),
};
+ if fs::metadata(LEASE_FILE).is_err() {
+ let mut file = OpenOptions::new()
+ .create(true)
+ .read(false)
+ .write(true)
+ .open(LEASE_FILE)?;
+
+ file.write_all(b"[]")?;
+ }
+
let file = OpenOptions::new()
- .create(true)
.read(true)
.write(true)
.truncate(false)
- .open("leases.json")?;
+ .open(LEASE_FILE)?;
let lease_mgr = Arc::new(Mutex::new(LeaseFileManager::new(config, file)?));