]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
add useful lua functions to handle knot types
authorVicky Shrestha <vicky@geeks.net.np>
Thu, 21 Dec 2017 06:07:02 +0000 (22:07 -0800)
committerPetr Špaček <petr.spacek@nic.cz>
Thu, 4 Jan 2018 10:04:40 +0000 (11:04 +0100)
daemon/lua/kres-gen.lua
daemon/lua/kres-gen.sh
daemon/lua/kres.lua

index d1bb444dd3fba6c5d230e2d9c4eace6a6983a407..f3ba3b71cbdb228a5d4428fcb74da3ecad334bf5 100644 (file)
@@ -242,6 +242,7 @@ int kr_pkt_recycle(knot_pkt_t *);
 const char *kr_inaddr(const struct sockaddr *);
 int kr_inaddr_family(const struct sockaddr *);
 int kr_inaddr_len(const struct sockaddr *);
+uint16_t kr_inaddr_port(const struct sockaddr *);
 int kr_straddr_family(const char *);
 int kr_straddr_subnet(void *, const char *);
 int kr_bitcmp(const char *, const char *, int);
index df066a2f6badbd5a33cf79c17b4ad0adf5d0971e..91f1618a2845d2e5f5fc43d4547d77ea1cea91b2 100755 (executable)
@@ -127,6 +127,7 @@ EOF
        kr_inaddr
        kr_inaddr_family
        kr_inaddr_len
+       kr_inaddr_port
        kr_straddr_family
        kr_straddr_subnet
        kr_bitcmp
index 52c6644c9e98ebee806761b23231157e1c91a7e3..6c195b9cc1db3b6dae94b236e693bb69c9f257ae 100644 (file)
@@ -174,6 +174,7 @@ ffi.metatype( sockaddr_t, {
                len = function(sa) return C.kr_inaddr_len(sa) end,
                ip = function (sa) return C.kr_inaddr(sa) end,
                family = function (sa) return C.kr_inaddr_family(sa) end,
+               port = function (sa) return C.kr_inaddr_port(sa) end,
        }
 })
 
@@ -248,6 +249,14 @@ ffi.metatype( knot_pkt_t, {
                        pkt.wire[2] = bor(pkt.wire[2], (val) and 0x02 or 0x00)
                        return band(pkt.wire[2], 0x02)
                end,
+               rd = function (pkt, val)
+                       pkt.wire[2] = bor(pkt.wire[2], (val) and 0x01 or 0x00)
+                       return band(pkt.wire[2],0x01)
+               end,
+               ad = function (pkt, val)
+                       pkt.wire[3] = bor(pkt.wire[3], (val) and 0x20 or 0x00)
+                       return band(pkt.wire[3],0x20)
+               end,
                rrsets = function (pkt, section_id)
                        local records = {}
                        local section = knot.knot_pkt_section(pkt, section_id)
@@ -299,7 +308,13 @@ ffi.metatype( kr_request_t, {
                        local qry = C.kr_rplan_resolved(C.kr_resolve_plan(req))
                        if qry == nil then return nil end
                        return qry
-
+               end,
+               -- returns first resolved sub query for a request
+               first_resolved = function(req)
+                       assert(req)
+                       local rplan = C.kr_resolve_plan(req)
+                       if not rplan or rplan.resolved.len < 1 then return nil end
+                       return rplan.resolved.at[0]
                end,
                push = function(req, qname, qtype, qclass, flags, parent)
                        assert(req)