From: Vicky Shrestha Date: Thu, 21 Dec 2017 06:07:02 +0000 (-0800) Subject: add useful lua functions to handle knot types X-Git-Tag: v2.0.0~46^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=83417090abd112412db772679637cd88332b255d;p=thirdparty%2Fknot-resolver.git add useful lua functions to handle knot types --- diff --git a/daemon/lua/kres-gen.lua b/daemon/lua/kres-gen.lua index d1bb444dd..f3ba3b71c 100644 --- a/daemon/lua/kres-gen.lua +++ b/daemon/lua/kres-gen.lua @@ -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); diff --git a/daemon/lua/kres-gen.sh b/daemon/lua/kres-gen.sh index df066a2f6..91f1618a2 100755 --- a/daemon/lua/kres-gen.sh +++ b/daemon/lua/kres-gen.sh @@ -127,6 +127,7 @@ EOF kr_inaddr kr_inaddr_family kr_inaddr_len + kr_inaddr_port kr_straddr_family kr_straddr_subnet kr_bitcmp diff --git a/daemon/lua/kres.lua b/daemon/lua/kres.lua index 52c6644c9..6c195b9cc 100644 --- a/daemon/lua/kres.lua +++ b/daemon/lua/kres.lua @@ -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)