]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
policy: add policy.FLAGS, (un)setting query flags
authorVladimír Čunát <vladimir.cunat@nic.cz>
Mon, 30 Jan 2017 14:58:55 +0000 (15:58 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Thu, 16 Feb 2017 10:19:54 +0000 (11:19 +0100)
modules/policy/policy.lua

index d7d3f83e3a0d135658db52990f01aed01622f66f..793ecd80259e30b89ebcf5b9bc41d68da0abaa9d 100644 (file)
@@ -97,9 +97,20 @@ local function reroute(tbl, names)
        return ren.rule(prefixes)
 end
 
+-- Set and clear some query flags (TODO: documentation).
+local function flags(opts_set, opts_clear)
+       return function(state, req)
+               req = kres.request_t(req)
+               local qry = req:current()
+               qry.flags = bit.band(bit.bor(qry.flags, opts_set or 0), bit.bnot(opts_clear or 0))
+               return nil -- chain rule
+       end
+end
+
 local policy = {
        -- Policies
-       PASS = 1, DENY = 2, DROP = 3, TC = 4, QTRACE = 5, FORWARD = forward, REROUTE = reroute, MIRROR = mirror,
+       PASS = 1, DENY = 2, DROP = 3, TC = 4, QTRACE = 5,
+       FORWARD = forward, REROUTE = reroute, MIRROR = mirror, FLAGS = flags,
        -- Special values
        ANY = 0,
 }