diff options
author | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-03-04 19:18:40 +0100 |
---|---|---|
committer | HimbeerserverDE <himbeerserverde@gmail.com> | 2023-03-04 19:18:40 +0100 |
commit | a220175e6a2a8b3afe254adb43ff56b8981493b7 (patch) | |
tree | b58bd1088d2f3750c16f6dfc611202f4db2b02db | |
parent | 98dc33607c55e59c45d7f423aadf24127e1d629a (diff) |
don't ackknowledge addresses that are outside of the declared range
-rw-r--r-- | src/lease.rs | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/lease.rs b/src/lease.rs index 034bdf1..2c5c152 100644 --- a/src/lease.rs +++ b/src/lease.rs @@ -160,7 +160,11 @@ impl LeaseManager for LeaseDummyManager { } fn request(&mut self, address: Ipv4Addr, client_id: &[u8]) -> Result<bool> { - if self.is_unavailable(address, client_id) { + let range = self.range(); + + if self.is_unavailable(address, client_id) + || !Ipv4AddrRange::new(range.0, range.1).any(|addr| addr == address) + { Ok(false) } else { let lease = self @@ -274,9 +278,13 @@ impl LeaseManager for LeaseFileManager { } fn request(&mut self, address: Ipv4Addr, client_id: &[u8]) -> Result<bool> { + let range = self.range(); + self.garbage_collect()?; - if self.is_unavailable(address, client_id) { + if self.is_unavailable(address, client_id) + || !Ipv4AddrRange::new(range.0, range.1).any(|addr| addr == address) + { Ok(false) } else { let lease = self |