Commit Graph

30 Commits

Author SHA1 Message Date
世界
bdfb344955 dns: validate rule-set updates before commit 2026-04-07 00:54:54 +08:00
世界
4bbff319bf Unify evaluate-produced DNS message terminology to "evaluated response" 2026-04-07 00:54:54 +08:00
世界
2779bca0d9 Add DNS respond rule action 2026-04-07 00:54:53 +08:00
世界
65967a51dc dns: reject evaluate fakeip servers 2026-04-07 00:54:53 +08:00
世界
5e97d5e296 Fix evaluate response-match validation 2026-04-07 00:54:53 +08:00
世界
eb4c550da2 Replace internal terminology in docs and error messages
Remove all user-facing references to the internal `legacyDNSMode` variable
name. Error messages now reuse the deprecated.Note.MessageWithLink() method
to provide consistent deprecation text with migration URLs. Other internal
jargon ("consume response state", "response_*") is replaced with
user-friendly descriptions.

Add two migration guide entries under 1.14.0: one for strategy → rule items,
one for address filter fields → evaluate with match_response.
2026-04-07 00:54:52 +08:00
世界
30bd87eb53 test: remove internal-state assertions that test through unexported fields 2026-04-07 00:54:52 +08:00
世界
aaa11fbdf1 test: remove low-value DNS WHAT tests 2026-04-07 00:54:51 +08:00
世界
bb546bd375 dns: add evaluate integration tests for response_rcode, response_ns, response_extra 2026-04-07 00:54:49 +08:00
世界
49cecb6aab dns: improve test coverage and cleanup
- Add t.Cleanup(router.Close) in newTestRouter for automatic cleanup
- Remove unnecessary testCase loop variable capture (Go 1.22+)
- Add tests for reject drop action, route_options effect, and
  chained evaluate response overwrite
2026-04-07 00:54:46 +08:00
世界
63d9af04ac dns: use refcounted snapshot to narrow rule lock scope
Exchange and Lookup held rulesAccess.RLock across all DNS network I/O,
blocking rebuildRules from swapping in new rules until every in-flight
query finished. Replace the RWMutex with an atomic pointer to a
refcounted rulesSnapshot so queries only hold a snapshot reference
during execution, allowing concurrent rule rebuilds.
2026-04-07 00:54:44 +08:00
世界
663b70d860 dns: serialize rebuilds and keep last good rules on failure 2026-04-07 00:54:44 +08:00
世界
f5b58215fc Use typed SVCB hint structs instead of string parsing 2026-04-07 00:54:42 +08:00
世界
6821d44f8b option: reject nested rule actions 2026-04-07 00:54:42 +08:00
世界
1495f24e60 dns: make rule strategy legacy-only 2026-04-07 00:54:42 +08:00
世界
8d44f52233 Make DNS match_response fail as a normal condition 2026-04-07 00:54:42 +08:00
世界
7ae1eaa403 Fix DNS rule-set ref handling 2026-04-07 00:54:42 +08:00
世界
7257fa590e Fix legacy DNS rule_set accept_empty matching 2026-04-07 00:54:42 +08:00
世界
c52ae06a4a dns: restore lookup reject semantics 2026-04-07 00:54:41 +08:00
世界
4ea33a00b1 Fix DNS record parsing and shutdown race 2026-04-07 00:54:41 +08:00
世界
db7655e7d3 dns: restore init validation and fix rule-set query type 2026-04-07 00:54:41 +08:00
世界
60c9f02fb4 dns: make rule path selection rule-set aware 2026-04-07 00:54:41 +08:00
世界
58f9933f14 dns: complete lookup rule execution in new mode 2026-04-07 00:54:41 +08:00
世界
0893488073 dns: preserve legacy address-filter pre-match semantics
Legacy DNS address-filter mode still accepts destination-side IP
predicates with a deprecation warning, but the recent evaluate/
match_response refactor started evaluating those predicates during
pre-response Match(). That broke rules whose transport selection must
be deferred until MatchAddressLimit() can inspect the upstream reply.

Restore the old defer behavior by reintroducing an internal
IgnoreDestinationIPCIDRMatch flag on InboundContext and using it only
for legacy pre-response DNS matching. Default and logical DNS rules now
carry the legacy mode bit, set the ignore flag on metadata copies while
performing pre-response Match(), and explicitly clear it again for
match_response and MatchAddressLimit() so response-phase matching still
checks the returned addresses.

Add regression coverage for direct legacy destination-IP rules,
rule_set-backed CIDR rules, logical wrappers, and the legacy Lookup
router path, including fallback after a rejected response. This keeps
legacy configs working without changing new-mode evaluate semantics.

Tests: go test ./route/rule ./dns
Tests: make
2026-04-07 00:54:40 +08:00
世界
312221eaf0 Fix DNS evaluate regressions 2026-04-07 00:54:40 +08:00
世界
097e75cc02 dns: use response-only address matching 2026-04-07 00:54:40 +08:00
世界
ae65281254 Fix DNS match_response response address handling 2026-04-07 00:54:39 +08:00
世界
81a06dd324 Fix DNS record parsing and matching regressions 2026-04-07 00:54:39 +08:00
世界
801366059c Fix DNS evaluate routing regressions 2026-04-07 00:54:39 +08:00
世界
2d08d34e0b Add evaluate DNS rule action and related rule items 2026-04-07 00:54:39 +08:00