DnsFilterEngine Class

A DNS filter matching engine that evaluates DNS queries against a set of filter rules. Supports efficient exact domain matching, subdomain matching, wildcard, and regex patterns.

public sealed class DnsFilterEngine

Remarks

DnsFilterEngine.Evaluate is safe to call concurrently, and DnsFilterEngine.Reload swaps the rule set atomically. DnsFilterRuleSet itself is not thread-safe for concurrent mutation; the engine takes a snapshot when it builds, so mutating a rule set afterwards never affects an engine already built from it.

Constructors

NameDescription
DnsFilterEngine(DnsFilterRuleSet)Initializes a new instance of the DnsFilterEngine class with the specified rule set.

DnsFilterEngine(DnsFilterRuleSet)

DnsFilterEngine.cs

Initializes a new instance of the DnsFilterEngine class with the specified rule set.

public DnsFilterEngine(DnsFilterRuleSet ruleSet)

Parameters

ruleSet DnsFilterRuleSet
The rule set to use for matching.

Methods

NameDescription
Evaluate(string, DnsFilterQueryType, DnsClientInfo)Evaluates a DNS query against the filter rules.
Reload(DnsFilterRuleSet)Atomically replaces the current rule set with a new one. Thread-safe with respect to concurrent DnsFilterEngine.Evaluate calls.

Evaluate(string, DnsFilterQueryType, DnsClientInfo)

DnsFilterEngine.cs

Evaluates a DNS query against the filter rules.

public DnsFilterResult Evaluate(string domain, DnsFilterQueryType queryType = DnsFilterQueryType.A, DnsClientInfo client = default)

Parameters

domain string
The queried domain name. Internationalized names are converted to their punycode form before matching.
queryType DnsFilterQueryType
The DNS query type. Pass the raw QTYPE cast to DnsFilterQueryType even when it is not a named member.
client DnsClientInfo
Optional client information for $client and $ctag matching. When a dimension is not supplied, rules scoped on it do not match.

Returns

DnsFilterResult A DnsFilterResult indicating whether the query is blocked, allowed, rewritten, or unmatched. This method does not throw for malformed or hostile input.

Reload(DnsFilterRuleSet)

DnsFilterEngine.cs

Atomically replaces the current rule set with a new one. Thread-safe with respect to concurrent DnsFilterEngine.Evaluate calls.

public void Reload(DnsFilterRuleSet ruleSet)

Parameters

ruleSet DnsFilterRuleSet
The new rule set.