diff --git a/daemon/lua/kres.lua b/daemon/lua/kres.lua index 194fd210da2c661bc052d430b41987ff2e2d92e5..aab9e1f97987d64c432656de0f87b6cbbeb4c3e1 100644 --- a/daemon/lua/kres.lua +++ b/daemon/lua/kres.lua @@ -207,6 +207,7 @@ struct kr_context * libc APIs */ void free(void *ptr); +int inet_pton(int af, const char *src, void *dst); /* * libknot APIs @@ -402,6 +403,13 @@ local kres = { str2dname = function(name) return ffi.string(ffi.gc(C.knot_dname_from_str(nil, name, 0), C.free)) end, dname2str = dname2str, rr2str = rr2str, + str2ip = function (ip) + local buf = ffi.new('char [16]') + local family = C.kr_straddr_family(ip) + local ret = C.inet_pton(family, ip, buf) + if ret ~= 1 then return nil end + return ffi.string(buf, C.kr_family_len(family)) + end, context = function () return ffi.cast('struct kr_context *', __engine) end, }