fix: filter out expired DHCP leases from table (keep pinned)

This commit is contained in:
Claus Lohmar 2026-07-25 18:21:24 +00:00
parent cad0458f1e
commit efeb993d20

View file

@ -205,7 +205,7 @@ func reloadDnsmasq() error {
return nil return nil
} }
// getAllLeases returns merged active and pinned lease info. // getAllLeases returns merged active (non-expired) and pinned lease info.
func getAllLeases() ([]LeaseEntry, error) { func getAllLeases() ([]LeaseEntry, error) {
activeLeases, err := parseLeases() activeLeases, err := parseLeases()
if err != nil { if err != nil {
@ -217,8 +217,15 @@ func getAllLeases() ([]LeaseEntry, error) {
return nil, fmt.Errorf("parse pinned: %w", err) return nil, fmt.Errorf("parse pinned: %w", err)
} }
now := time.Now()
entries := make([]LeaseEntry, 0, len(activeLeases)) entries := make([]LeaseEntry, 0, len(activeLeases))
for _, lease := range activeLeases { for _, lease := range activeLeases {
// Skip expired leases (expiry is in the past and not pinned).
if lease.Expiry.Before(now) {
if _, ok := pinned[lease.MAC]; !ok {
continue
}
}
status := PinStatusActive status := PinStatusActive
if _, ok := pinned[lease.MAC]; ok { if _, ok := pinned[lease.MAC]; ok {
status = PinStatusPermanent status = PinStatusPermanent