dhcp4d: allow handing out static leases outside of the pool

This commit is contained in:
Michael Stapelberg 2023-03-12 08:59:25 +01:00
parent fd975db6a5
commit b2db10d68b

View File

@ -187,7 +187,7 @@ func (h *Handler) canLease(reqIP net.IP, hwaddr string) int {
} }
leaseNum := dhcp4.IPRange(h.start, reqIP) - 1 leaseNum := dhcp4.IPRange(h.start, reqIP) - 1
if leaseNum < 0 || leaseNum >= h.leaseRange { if leaseNum < 0 {
return -1 return -1
} }
@ -195,6 +195,10 @@ func (h *Handler) canLease(reqIP net.IP, hwaddr string) int {
defer h.leasesMu.Unlock() defer h.leasesMu.Unlock()
l, ok := h.leasesIP[leaseNum] l, ok := h.leasesIP[leaseNum]
if !ok { if !ok {
if leaseNum >= h.leaseRange {
return -1
}
return leaseNum // lease available 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 return leaseNum // lease already owned by requestor
} }
if leaseNum >= h.leaseRange {
return -1
}
if l.Expired(h.timeNow()) { if l.Expired(h.timeNow()) {
return leaseNum // lease expired return leaseNum // lease expired
} }