- Re-cloned zonemaster-ldns with --recurse-submodules so the bundled ldns C library source (including Changelog and configure.ac) is present - Added autoconf, automake, libtool to Dockerfile.backend ldns-build stage so libtoolize + autoreconf can generate ldns/configure during make Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
127 lines
3.0 KiB
Lua
127 lines
3.0 KiB
Lua
-- ldns defines - need a better way to keep these current
|
|
LDNS_SECTION_QUESTION = 0
|
|
LDNS_SECTION_ANSWER = 1
|
|
LDNS_SECTION_AUTHORITY = 2
|
|
LDNS_SECTION_ADDITIONAL = 3
|
|
LDNS_SECTION_ANY = 4
|
|
LDNS_SECTION_ANY_NOQUESTION = 5
|
|
|
|
-- rdf types
|
|
LDNS_RDF_TYPE_NONE = 0
|
|
LDNS_RDF_TYPE_DNAME = 1
|
|
LDNS_RDF_TYPE_INT8 = 1
|
|
LDNS_RDF_TYPE_INT16 = 3
|
|
LDNS_RDF_TYPE_INT32 = 4
|
|
LDNS_RDF_TYPE_A = 5
|
|
LDNS_RDF_TYPE_AAAA = 6
|
|
LDNS_RDF_TYPE_STR = 7
|
|
LDNS_RDF_TYPE_APL = 8
|
|
LDNS_RDF_TYPE_B32_EXT = 9
|
|
LDNS_RDF_TYPE_B64 = 10
|
|
LDNS_RDF_TYPE_HEX = 11
|
|
LDNS_RDF_TYPE_NSEC = 12
|
|
LDNS_RDF_TYPE_TYPE = 13
|
|
LDNS_RDF_TYPE_CLASS = 14
|
|
LDNS_RDF_TYPE_CERT = 15
|
|
LDNS_RDF_TYPE_ALG = 16
|
|
LDNS_RDF_TYPE_UNKNOWN = 17
|
|
LDNS_RDF_TYPE_TIME = 18
|
|
LDNS_RDF_TYPE_PERIOD = 19
|
|
LDNS_RDF_TYPE_TSIGTIME = 20
|
|
LDNS_RDF_TYPE_HIP = 21
|
|
LDNS_RDF_TYPE_INT16_DATA = 22
|
|
LDNS_RDF_TYPE_SERVICE = 23
|
|
LDNS_RDF_TYPE_LOC = 24
|
|
LDNS_RDF_TYPE_WKS = 25
|
|
LDNS_RDF_TYPE_NSAP = 26
|
|
LDNS_RDF_TYPE_ATMA = 27
|
|
LDNS_RDF_TYPE_IPSECKEY = 28
|
|
|
|
function lua_debug(...)
|
|
print("[lua]", unpack(arg))
|
|
end
|
|
|
|
-- transpose 2 rrs in a pkt --
|
|
function lua_record_transpose(pkt, n1, n2)
|
|
print("[info] [RR] transpose", n1, n2)
|
|
local rr_n1 = packet.get_rr(pkt, n1)
|
|
local rr_n2 = packet.set_rr(pkt, rr_n1, n2)
|
|
local rr_tm = packet.set_rr(pkt, rr_n2, n1)
|
|
record.free(rm_tm)
|
|
end
|
|
|
|
-- _R := random
|
|
function lua_record_transpose_R(pkt)
|
|
local total = packet.rrcount(pkt) - 1
|
|
local rn1 = math.random(0, total)
|
|
local rn2 = math.random(0, total)
|
|
lua_transpose_record(pkt, rn1, rn2)
|
|
end
|
|
|
|
-- substitute, add, remove
|
|
function lua_record_insert(pkt, r, n)
|
|
print("[info] [RR] insert after", n)
|
|
packet.insert_rr(pkt, r, n)
|
|
end
|
|
|
|
-- add an rr to the end of a pkt --
|
|
-- _E := end
|
|
function lua_record_insert_E(pkt, r)
|
|
local n = packet.rrcount(pkt) - 1
|
|
print(n)
|
|
lua_insert_rr(pkt, r, n)
|
|
end
|
|
|
|
-- remove an rr from the end of a pkt --
|
|
--pop??
|
|
function lua_record_remove_E(pkt, n)
|
|
print("[info] [RR] remove", "end")
|
|
end
|
|
|
|
-- increment the ancount
|
|
function lua_packet_ancount_incr(pkt, n)
|
|
print("[info] [PKT] ancount incr", n)
|
|
an = packet.ancount(pkt)
|
|
n = an + n
|
|
packet.set_ancount(pkt, n)
|
|
end
|
|
|
|
---------------------------------
|
|
-- higher level --
|
|
---------------------------------
|
|
|
|
-- reverse all the rrs in a pkt --
|
|
function lua_packet_reverse(pkt)
|
|
local total = packet.rrcount(pkt) - 1
|
|
for i=0, (total / 2) do
|
|
lua_transpose_rr(pkt, i, total - i)
|
|
end
|
|
end
|
|
|
|
-- write a buffer to a socket
|
|
function lua_udp_write(socket, buffer_wire, sock_from)
|
|
-- convert the sockaddr_storage to something we
|
|
-- can work with
|
|
|
|
-- checks
|
|
if socket == 0 then return -1 end
|
|
if buffer_wire == nil then return -1 end
|
|
if sock_from == nil then return -1 end
|
|
|
|
rdf_listen, port_listen = rdf.sockaddr_to_rdf(sock_from)
|
|
|
|
bytes = udp.write(socket, buffer_wire, rdf_listen, port_listen)
|
|
return bytes
|
|
end
|
|
|
|
|
|
-- initialize the pseudo random number generator
|
|
-- frm: http://lua-users.org/wiki/MathLibraryTutorial
|
|
function lua_rand_init()
|
|
math.randomseed(os.time())
|
|
math.random()
|
|
math.random()
|
|
math.random()
|
|
end
|
|
lua_rand_init()
|