Quotas: save their usage after every change

The server hooks the engine's OnChange to save what the quotas used, so
a reboot soon after a change that counts a quota differently doesn't
bring back its usage counted the old way (it was saved every five
minutes and on stop only).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
abrown38andClaude Opus 5.5 committed 2026-10-21 15:04:04 +01:00
1 parent 8fa28d01c2
commit aaf0ac5206
5 files changed
+33 -5

No files matched your search

+3 -3
View File
@@ -164,9 +164,9 @@ start again. A disabled rule keeps its count for when it is enabled.
resets; `hc rule reset-quota ID` starts one again (`--address` one device's,
`--give 5gbytes` a top-up until the next reset). housecarld resets
quotas at midnight when their period ends (late, if it was stopped then),
and saves their usage every five minutes and when it stops; after a
reboot it puts it back. A reboot without a clean stop loses at most the
last five minutes' count.
and saves their usage every five minutes, after every change and when
it stops; after a reboot it puts it back. A reboot without a clean stop
loses at most the last five minutes' count.
## The log
+2 -2
View File
@@ -209,8 +209,8 @@ Statistics**.
nftables counts a quota but never resets it, and forgets it when its
table is replaced: Housecarl carries what each quota used across every
change and restart, saves it every five minutes (and when housecarld
stops) for after a reboot, and resets quotas when their period ends.
change and restart, saves it every five minutes (and after each change,
and when housecarld stops) for after a reboot, and resets quotas when their period ends.
A per-address quota counts an address: a device that gets a new one
starts again. With Steward's reservations IPv4 addresses stay; IPv6 is
grouped by /64 (below).