diff --git a/daemon/lua/kres.lua b/daemon/lua/kres.lua index 4dd2a01f9a1e1d4f7cbbbb993df88c105e2e227d..fdb37958208335f5e885826c32d46a5cec65b2c4 100644 --- a/daemon/lua/kres.lua +++ b/daemon/lua/kres.lua @@ -325,6 +325,24 @@ ffi.metatype( kr_request_t, { }, }) +-- Pretty print for domain name +local function dname2str(dname) + return ffi.string(ffi.gc(C.knot_dname_to_str(nil, dname, 0), C.free)) +end + +-- Pretty print for RR +local function rr2str(rr) + local function hex_encode(str) + return (str:gsub('.', function (c) + return string.format('%02X', string.byte(c)) + end)) + end + local rdata = hex_encode(rr.rdata) + return string.format('%s %d IN TYPE%d \\# %d %s', + dname2str(rr.owner), rr.ttl, rr.type, #rr.rdata, rdata) +end + + -- Module API local kres = { -- Constants @@ -339,7 +357,8 @@ local kres = { request_t = function (udata) return ffi.cast('struct kr_request *', udata) end, -- Global API functions str2dname = function(name) return ffi.string(ffi.gc(C.knot_dname_from_str(nil, name, 0), C.free)) end, - dname2str = function(dname) return ffi.string(ffi.gc(C.knot_dname_to_str(nil, dname, 0), C.free)) end, + dname2str = dname2str, + rr2str = rr2str, context = function () return ffi.cast('struct kr_context *', __engine) end, }