From 92e8358d46aa5316710cd832a95dfa6166ad7a54 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Fri, 10 May 2024 17:20:30 +0100 Subject: [PATCH] unbound-dhcp-leases-bridge: Find existing leases to remove all data Signed-off-by: Michael Tremer --- config/unbound/unbound-dhcp-leases-bridge | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/config/unbound/unbound-dhcp-leases-bridge b/config/unbound/unbound-dhcp-leases-bridge index ec87803069..43f006e934 100644 --- a/config/unbound/unbound-dhcp-leases-bridge +++ b/config/unbound/unbound-dhcp-leases-bridge @@ -231,8 +231,12 @@ class UnboundDHCPLeasesBridge(object): elif event in ("release", "expiry"): address = message.get("ADDRESS") - # Create a new lease - lease = Lease(address, {}) + # Find the lease + lease = self._find_lease(address) + + if not lease: + log.warning("Could not find lease for %s" % address) + return # Remove the lease self.unbound.remove_lease(lease) @@ -282,6 +286,17 @@ class UnboundDHCPLeasesBridge(object): # Store the lease self.leases.add(lease) + def _find_lease(self, ipaddr): + """ + Returns the lease with the specified IP address + """ + if not isinstance(ipaddr, ipaddress.IPv4Address): + ipaddr = ipaddress.IPv4Address(ipaddr) + + for lease in self.leases: + if lease.ipaddr == ipaddr: + return lease + def read_static_hosts(self): log.info("Reading static hosts from %s" % self.hosts_file) -- 2.39.5