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

  1. Check the wrapped error detail for the offending lease
  2. If the subnet changed, delete the stale leases file so old-subnet leases are dropped
  3. 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

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


AI-assisted analysis of AdguardTeam/AdGuardHome@b41aefbe51 (2026-08-27). Data as JSON: /api/errors/ed17edf5c282b23c. Report an issue: GitHub.