43 Commits
Author SHA1 Message Date
klutchell-renovate[bot] e0be5d5e32 Update alpine:3.24 Docker digest to 294b683 2026-09-19 04:48:09 +00:00
Kyle Harding e31f1e27e2 Assert ECS config locally rather than via an authority
My previous change did not fix the flake, it moved it. Asserting on a
CLIENT-SUBNET option in the client's answer still depends on whether the
authority echoes ECS back, which is the same coin flip the original
`grep edns0-client-subnet` rode on. Two runs of that assertion, same
branch, minutes apart: amd64 saw `answer has edns subnet 203.0.113.0/24`
twice and passed, arm64 saw it zero times and failed.

Two mistakes. 203.0.113.0/24 is TEST-NET-3, so it is no more routable
than the RFC1918 address it replaced and authorities decline it just the
same -- the failing job still got "edns0-client-subnet was not used".
And unbound does not echo CLIENT-SUBNET to a client that sent one in
general: subnetmod.c gates that on the client having sent a /0 prefix, so
with a /24 the generate_lookup_without_subnet() fallback returns the
answer with no option at all.

There is no client-visible ECS signal that survives an authority
declining, so assert only local state: the build links subnetcache, the
mounted example config puts it in the module chain, and send-client-subnet
was parsed. The active unbound.conf sets no module-config, so
"init module 0: subnetcache" appears only when the example file loaded --
which is what this test existed to check.

Verified by matching each pattern against captured output from seven real
jobs, across four platforms and unbound 1.25.2 and 1.26.0, passing and
failing. Testing an actual round-trip would need an authoritative server
in the compose file; that is a larger change than this test has had.

Signed-off-by: Kyle Harding <kyle@balena.io>
2026-08-10 18:07:51 -04:00
Kyle Harding 4db6017205 Fix flaky ECS test
The ECS assertion grepped for `edns0-client-subnet`, which matches the
substring inside Google's *negative* reply "edns0-client-subnet was not
used". So the test's green state was Google telling us ECS was not used,
and it never verified ECS at all.

The sut container's address is 172.18.0.2, so unbound forwards
172.18.0.0/24 upstream. Authorities won't use an RFC1918 prefix, hence
the "was not used" answer. Whether that answer reaches the client is up
to Google's anycast fleet: if the reply echoes the ECS option unbound
keeps it and the substring matches, but if the reply omits the option
unbound logs "Authority indicates no support", re-resolves without the
subnet, and returns a single TXT record with no substring to match.
Both are RFC 7871-legal, so re-running just rolled the dice again --
roughly half the Test docker jobs failed on this line, on every
platform.

Have the client supply a routable prefix via +subnet instead, and assert
that unbound echoes the option back. unbound returns a CLIENT-SUBNET
option whenever the client sent one -- with the upstream scope, or
scope 0 via cp_edns_bad_response when upstream declines -- so the
assertion no longer depends on any authority's ECS policy. It also
fails when the subnet module is absent, which the old one could not.

Signed-off-by: Kyle Harding <kyle@balena.io>
2026-08-10 16:51:25 -04:00
klutchell-renovate[bot] 649032262a Update all digest updates 2026-06-20 05:03:32 +00:00
klutchell-renovate[bot] 1a547808ac Update alpine Docker tag 2026-06-13 08:15:26 +00:00
klutchell-renovate[bot] ef6652f1a1 Update alpine:3.23 Docker digest to 5b10f43 2026-04-20 04:39:01 +00:00
klutchell-renovate[bot] d38726599f Update alpine:3.23 Docker digest to 2510918 2026-02-02 05:17:12 +00:00
klutchell-renovate[bot] 7ba8fd0a61 Update alpine:3.23 Docker digest to 865b95f 2025-12-22 06:11:36 +00:00
klutchell-renovate[bot] b4c0d9eb2b Update alpine Docker tag 2025-12-08 05:11:36 +00:00
klutchell-renovate[bot] 1b3d3ce010 Update alpine:3.22 Docker digest to 4b7ce07 2025-10-13 05:09:14 +00:00
klutchell-renovate[bot] 23bb8973b1 Update alpine:3.22 Docker digest to 4bcff63 2025-07-21 04:49:27 +00:00
klutchell-renovate[bot] 8e7280b347 Update alpine Docker tag 2025-06-02 04:16:07 +00:00
klutchell-renovate[bot] 99a85570ff Update alpine:3.21 Docker digest to a8560b3 2025-02-17 06:10:30 +00:00
renovate[bot] 27954204fb Update alpine Docker tag 2025-01-13 16:55:34 +00:00
renovate[bot] 9dffdbd8b9 Update alpine:3.20 Docker digest to 31687a2 2025-01-13 05:44:06 +00:00
renovate[bot] 505012713f Update alpine:3.20.3 Docker digest to 1e42bbe 2024-11-18 10:24:35 +00:00
Kyle Harding 712af1bbb4 Add a drill binary wrapper to simplify exit codes
Docker healthchecks expect processes to exit with 0 or 1,
the other exit codes are reserved.

Signed-off-by: Kyle Harding <kyle@balena.io>
2024-10-24 13:26:48 -04:00
Renovate Bot ab3d9437e7 Update alpine:3.20 Docker digest to beefdbd 2024-09-09 13:13:19 +00:00
Kyle Harding 445a7405e9 Add remote-control example configuration
Signed-off-by: Kyle Harding <kyle@balena.io>
2024-08-15 09:34:59 -04:00
Renovate Bot 4a4f6cd302 Update alpine:3.20 Docker digest to 0a4eaa0 2024-07-29 14:06:36 +00:00
Renovate Bot 864aa64989 Update all digest updates 2024-06-24 13:38:27 +00:00
Renovate Bot f43bba0dec Update alpine Docker tag 2024-05-27 14:08:32 +00:00
Kyle Harding 80d3818647 Remove hardcoded port from default interface
Signed-off-by: Kyle Harding <kyle@balena.io>
2024-03-01 19:44:55 -05:00
Renovate Bot 65b95e51b2 Update alpine:3.19 Docker digest to c5b1261 2024-01-27 01:27:07 +00:00
Renovate Bot 450bc20207 Update alpine:3.19 Docker digest to b5dfcf7 2024-01-27 00:09:34 +00:00
Renovate Bot 462ce796c9 Update alpine Docker tag 2023-12-18 12:44:43 +00:00
Renovate Bot ba6891ab46 Update alpine:3.18 Docker digest to 34871e7 2023-12-01 03:07:58 +00:00
Renovate Bot 543a14a2ee Update alpine:3.18 Docker digest to 69e0a8b 2023-11-30 23:37:17 +00:00
Renovate Bot 2b7ef3aa87 Update alpine:3.18 Docker digest to 3a24491 2023-11-30 23:06:48 +00:00
Kyle Harding 0f7b28bd24 Add a test for custom listen interfaces
Signed-off-by: Kyle Harding <kyle@balena.io>
2023-11-14 15:00:44 -05:00
Renovate Bot b06b808257 Update alpine:3.18 Docker digest to eece025 2023-09-28 23:05:48 +00:00
Kyle Harding cca9e55da9 Add ECS tests with send-client-subnet example configuration
Signed-off-by: Kyle Harding <kyle@balena.io>
2023-08-29 08:39:36 -04:00
Renovate Bot b771489bc9 Update alpine:3.18 Docker digest to 7144f7b 2023-08-22 13:07:45 +00:00
Renovate Bot 82a4a84e32 Pin dependencies 2023-07-18 19:07:41 +00:00
Renovate Bot 9257c41b46 Update alpine Docker tag 2023-05-22 14:05:48 +00:00
Kyle Harding 33c492f6a9 Remove buildroot and compile static binaries from source
Allow faster development by controlling build steps in this project
rather than deferring changes to buildroot.

This is a potentially breaking change, but efforts have been made
to maintain paths and usernames for compatibility with previous
releases.

Signed-off-by: Kyle Harding <kyle@balena.io>
2023-05-17 12:29:05 -04:00
Renovate Bot 99a377454a Update alpine Docker tag to v3.17 2022-11-22 20:04:36 +00:00
Kyle Harding 3d60dfaad7 Cleanup the tests and extend timeouts for lame dns
Signed-off-by: Kyle Harding <kyle@balena.io>
2022-11-16 09:57:46 -05:00
Kyle Harding 7d876222c5 Use dnssec.works instead of verteiltesysteme.net for tests
As the latter broke [1], this PR updates the tests to use a
different DNSSEC validation service: https://dnssec.works

[1] https://github.com/pi-hole/FTL/pull/1469#issuecomment-1307718167

Signed-off-by: Kyle Harding <kyle@balena.io>
2022-11-15 09:21:10 -05:00
Kyle Harding 61fe0bf8a5 Improve caching between CI/CD builds
Signed-off-by: Kyle Harding <kyle@balena.io>
2022-10-15 13:15:58 -04:00
Kyle Harding abdfc4474b Use docker bake file for multi-arch builds with Flowzone
Signed-off-by: Kyle Harding <kyle@balena.io>
2022-08-30 14:36:25 -04:00
Kyle Harding 75bbae7425 Clean up the docker workflow
Signed-off-by: Kyle Harding <kyle@balena.io>
2022-08-09 17:57:55 -04:00
Kyle Harding 7b0cf45ccb Switch to callable workflows
Signed-off-by: Kyle Harding <kyle@balena.io>
2022-07-30 06:51:12 -04:00