From 35411697384d041bbc5fc581257183e88e0cf8ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Vavru=C5=A1a?= Date: Mon, 28 Sep 2015 00:04:10 +0200 Subject: [PATCH] daemon/lua: print RR in text format (generic) example: local rr = pkt:section(kres.section.ANSWER)[1] print(kres.rr2str(rr)) --- daemon/lua/kres.lua | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/daemon/lua/kres.lua b/daemon/lua/kres.lua index 4dd2a01f9..fdb379582 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, } -- GitLab