AdguardTeam/AdGuardHome · error
resetting dhcpv4 leases: %w
Error message
resetting dhcpv4 leases: %w
What it means
After loading and converting leases, pushing them into the DHCPv4 server's lease table via ResetLeases failed. The wrapped error comes from the dhcpsvc layer, often overlapping IPs, bad masks, or too many leases.
Source
Thrown at internal/dhcpd/db.go:131
for _, l := range leases {
var lease *dhcpsvc.Lease
lease, err = l.toLease()
if err != nil {
log.Info("dhcp: invalid lease: %s", err)
continue
}
if lease.IP.Is4() {
leases4 = append(leases4, lease)
} else {
leases6 = append(leases6, lease)
}
}
err = s.srv4.ResetLeases(leases4)
if err != nil {
return fmt.Errorf("resetting dhcpv4 leases: %w", err)
}
if s.srv6 != nil {
err = s.srv6.ResetLeases(leases6)
if err != nil {
return fmt.Errorf("resetting dhcpv6 leases: %w", err)
}
}
log.Info(
"dhcp: loaded leases v4:%d v6:%d total-read:%d from DB",
len(leases4),
len(leases6),
len(leases),
)
return nil
}View on GitHub (pinned to b41aefbe51)
Solutions
- Check the wrapped error detail for the offending lease
- If the subnet changed, delete the stale leases file so old-subnet leases are dropped
- Reconcile static leases with the new range before re-applying config
Defensive patterns
Strategy: fallback
Validate before calling
// filter leases to current subnet before reset
var kept []*dhcpsvc.Lease
for _, l := range leases { if subnet.Contains(l.IP) { kept = append(kept, l) } } Prevention
- Delete stale lease DBs when changing subnets
- Keep static leases consistent with the active range
When it happens
Trigger: Calling Create/handleDHCPSetConfig with a stored lease set containing duplicate IPs, an IP outside the current subnet, or otherwise invalid v4 lease data for the new config.
Common situations: Changing the DHCP subnet/range while old leases reference addresses in the previous subnet; corrupt or stale lease DBs.
Related errors
- resetting dhcpv6 leases: %w
- %v is not an IPv4 %s
- parsing hardware address: %w
- parsing expiry time: %w
- reading db: %w
AI-assisted analysis of AdguardTeam/AdGuardHome@b41aefbe51 (2026-08-27).
Data as JSON: /api/errors/ed17edf5c282b23c.
Report an issue: GitHub.