{"record":{"id":"60aa685c99284405","repo":"AdguardTeam/AdGuardHome","slug":"resetting-dhcpv6-leases-w","errorCode":null,"errorMessage":"resetting dhcpv6 leases: %w","messagePattern":"resetting dhcpv6 leases: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"internal/dhcpd/db.go","lineNumber":137,"sourceCode":"\t\t\tcontinue\n\t\t}\n\n\t\tif lease.IP.Is4() {\n\t\t\tleases4 = append(leases4, lease)\n\t\t} else {\n\t\t\tleases6 = append(leases6, lease)\n\t\t}\n\t}\n\n\terr = s.srv4.ResetLeases(leases4)\n\tif err != nil {\n\t\treturn fmt.Errorf(\"resetting dhcpv4 leases: %w\", err)\n\t}\n\n\tif s.srv6 != nil {\n\t\terr = s.srv6.ResetLeases(leases6)\n\t\tif err != nil {\n\t\t\treturn fmt.Errorf(\"resetting dhcpv6 leases: %w\", err)\n\t\t}\n\t}\n\n\tlog.Info(\n\t\t\"dhcp: loaded leases v4:%d  v6:%d  total-read:%d from DB\",\n\t\tlen(leases4),\n\t\tlen(leases6),\n\t\tlen(leases),\n\t)\n\n\treturn nil\n}\n\n// dbStore stores DHCP leases.\nfunc (s *server) dbStore() (err error) {\n\t// Use an empty slice here as opposed to nil so that it doesn't write\n\t// \"null\" into the database file if leases are empty.\n\tleases := []*dbLease{}","sourceCodeStart":119,"sourceCodeEnd":155,"githubUrl":"https://github.com/AdguardTeam/AdGuardHome/blob/b41aefbe51c8dde65e2c50f093996afa0502edf9/internal/dhcpd/db.go#L119-L155","documentation":"Loading stored leases into the DHCPv6 server via ResetLeases failed. Only raised when a v6 server is configured (s.srv6 != nil); wrapped error comes from the v6 lease storage layer.","triggerScenarios":"Calling Create or set-config with DHCPv6 enabled and a lease DB containing invalid v6 lease data (bad IP, conflicts with the configured v6 range).","commonSituations":"Enabling DHCPv6 after previously running with a different range/prefix; stale or corrupt leases referencing deprecated prefixes.","solutions":["Inspect the wrapped error for the specific lease problem","Delete the leases file if old v6 leases are stale after a prefix change","Ensure v6 range config matches the leases being restored"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":"// drop v6 leases outside configured range before enabling\nfor _, l := range leases6 { if !v6RangeContains(l.IP) { /* drop */ } }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Clear old v6 leases after prefix changes","Re-apply config after fixing ranges"],"tags":["dhcp","leases","ipv6","reset"],"backgroundTag":"dhcp-lease-reset-failed","analyzedSha":"b41aefbe51c8dde65e2c50f093996afa0502edf9","analyzedAt":"2026-08-27T04:57:55.097Z","schemaVersion":2},"datasetVersion":"2026-08-27T08:17:20.692Z"}