From b2db10d68bfe89448ee5e102c91615ab1b8b0802 Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Sun, 12 Mar 2023 08:59:25 +0100 Subject: [PATCH] dhcp4d: allow handing out static leases outside of the pool --- internal/dhcp4d/dhcp4d.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/internal/dhcp4d/dhcp4d.go b/internal/dhcp4d/dhcp4d.go index 4eaf1de..e143f90 100644 --- a/internal/dhcp4d/dhcp4d.go +++ b/internal/dhcp4d/dhcp4d.go @@ -187,7 +187,7 @@ func (h *Handler) canLease(reqIP net.IP, hwaddr string) int { } leaseNum := dhcp4.IPRange(h.start, reqIP) - 1 - if leaseNum < 0 || leaseNum >= h.leaseRange { + if leaseNum < 0 { return -1 } @@ -195,6 +195,10 @@ func (h *Handler) canLease(reqIP net.IP, hwaddr string) int { defer h.leasesMu.Unlock() l, ok := h.leasesIP[leaseNum] if !ok { + if leaseNum >= h.leaseRange { + return -1 + } + return leaseNum // lease available } @@ -202,6 +206,10 @@ func (h *Handler) canLease(reqIP net.IP, hwaddr string) int { return leaseNum // lease already owned by requestor } + if leaseNum >= h.leaseRange { + return -1 + } + if l.Expired(h.timeNow()) { return leaseNum // lease expired }