]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/commitdiff
unbound+DHCP: Make sure to only remove old leases and not static hosts
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 14 Sep 2016 15:35:41 +0000 (16:35 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 14 Sep 2016 15:35:41 +0000 (16:35 +0100)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
config/unbound/unbound-dhcp-leases-bridge

index f192179ad5e92d4f3d8086e8310b88afdef60f1b..0ef14e1c3e1e7a28967a8f063fdc031699869b12 100644 (file)
@@ -338,15 +338,19 @@ class UnboundConfigWriter(object):
                return ret
 
        def update_dhcp_leases(self, leases):
-               # Strip all non-active or expired leases
-               leases = [l for l in leases if l.active and not l.expired]
+               # Cache all expired or inactive leases
+               expired_leases = [l for l in leases if l.expired or not l.active]
 
-               # Find any leases that have expired or do not exist any more 
+               # Find any leases that have expired or do not exist any more
+               # but are still in the unbound local data
                removed_leases = []
                for fqdn, address in self.existing_leases.items():
-                       if not fqdn in (l.fqdn for l in leases):
+                       if fqdn in (l.fqdn for l in expired_leases):
                                removed_leases += [fqdn, address]
 
+               # Strip all non-active or expired leases
+               leases = [l for l in leases if l.active and not l.expired]
+
                # Find any leases that have been added
                new_leases = [l for l in leases
                        if l.fqdn not in self.existing_leases]