aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2023-03-04 19:18:40 +0100
committerHimbeerserverDE <himbeerserverde@gmail.com>2023-03-04 19:18:40 +0100
commita220175e6a2a8b3afe254adb43ff56b8981493b7 (patch)
treeb58bd1088d2f3750c16f6dfc611202f4db2b02db
parent98dc33607c55e59c45d7f423aadf24127e1d629a (diff)
don't ackknowledge addresses that are outside of the declared range
-rw-r--r--src/lease.rs12
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