[Pdns-dev] lua script to synthesize AAAA record from A record
Muntasir Rahman
muntasir.rahman at gmail.com
Fri May 4 14:55:03 CEST 2012
Hello Peter,
Thanks for the clue. I have tried it. But, it return an error message like
this: PANIC: unprotected error in call to Lua API.
I download the source, with lua hook to nodata function from here:
http://svn.powerdns.com/snapshots/pdns-recursor-3.3-hooks.tar.bz2
i compile & run it using these steps:
$ LUA=1 ./configure
$ LUA=1 make
./pdns_recursor --local-address=0.0.0.0 --local-port=5300 --daemon=no
--socket-dir=./ --lua-dns-script=dns64.lua
Here is the lua script (copy-paste from
http://wiki.powerdns.com/trac/browser/trunk/pdns/pdns/powerdns-example-script.lua
):
function nodata (remoteip, domain, qtype, records)
print("nodata : ", remoteip, domain, qtype, records)
if qtype ~= pdns.AAAA then return -1,{} end
setvariable()
return "getFakeAAAARecords", domain, "0:0:0:0:0:ffff:0:0"
end
At a terminal, i launch this command:
dig @127.0.0.1 -p 5300 www.kame.com AAAA
Aand i got this error message at recursor's terminal:
PANIC: unprotected error in call to Lua API (attempt to index a nil value)
Would you like to give me a hint on what is wrong with the script?
Regards,
Muntasir
On Fri, May 4, 2012 at 5:42 PM, Peter van Dijk <peter.van.dijk at netherlabs.nl
> wrote:
> Hello Muntasir,
>
> On May 4, 2012, at 6:47 , Muntasir Rahman wrote:
>
> > function nodata ( remoteip, domain, qtype, records )
> > print ("nodata called for: ", remoteip, getlocaladdress(), domain,
> qtype)
> > if qtype ~= pdns.AAAA then return -1, {} end -- only AAAA records
> > setvariable()
> > return "getFakeAAAARecords", domain, "fe80::21b:77ff:0:0" -- here i
> need to return ::ffff:ipv4.dotted.decimal.format
> > end
> >
> > I would like to do something like this
> >
> > ipv4 = "1.2.3.4" -- how do i get this data from recursor ???
> > ipv6 = "::ffff:" .. ipv4 -- synthesized representation of IPv4 in
> IPv6
> > return "getFakeAAARecords", domain, ipv6
> >
> > My question is:
> > - how do i get IPv4 data using lua API in above script examples?
>
> You don't. getFakeAAAARecords handles this. Just returning
> "getFakeAAAARecords", domain, "0:0:0:0:0:ffff:0:0" should work.
>
> (You can't say "::ffff" or "::ffff:" - the first would cause the v4
> address to just overwrite those bits and the last would be a parse error).
>
> Kind regards,
> --
> Peter van Dijk
> Netherlabs Computer Consulting BV - http://www.netherlabs.nl/
>
> _______________________________________________
> Pdns-dev mailing list
> Pdns-dev at mailman.powerdns.com
> http://mailman.powerdns.com/mailman/listinfo/pdns-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.powerdns.com/pipermail/pdns-dev/attachments/20120504/92e88159/attachment-0001.htm>
-------------- next part --------------
function postresolve (remoteip, domain, qtype, records, origrcode)
print("post-resolve: ", domain, qtype)
return origrcode, records
end
function preresolve (remoteip, domain, qtype)
print("pre-resolve: ", domain, qtype)
return -1, {}
end
function nodata (remoteip, domain, qtype, records)
print("nodata : ", remoteip, domain, qtype, records)
if qtype ~= pdns.AAAA then return -1,{} end
setvariable()
return "getFakeAAAARecords", domain, "0:0:0:0:0:ffff:0:0"
end
function nxdomain (remoteip, domain, qtype)
print("nxdomain: ", remoteip, domain, qtype)
return -1, {}
end
More information about the Pdns-dev
mailing list