.. function:: ANSWER({ type = { ttl=ttl, rdata=data} }, nodata)
- Overwrite rr data in response. ``rdata`` takes just IP address. If `nodata` is `true` policy return `NODATA` when requested type from client isn't specified (default: ``nodata=false``).
+ Overwrite rr data in response. ``rdata`` takes just IP address or a lua list of addresses. If `nodata` is `true` policy return `NODATA` when requested type from client isn't specified (default: ``nodata=false``).
.. code-block:: lua
- -- this policy changes IPv4 adress and TTL for `exmaple.com`
+ -- this policy changes IPv4 adress and TTL for `example.com`
policy.add(policy.suffix(policy.ANSWER({ [kres.type.A] = { ttl=300, rdata='\192\0\2\7' } }), { todname('example.com') }))
More complex non-chain actions are described in their own chapters, namely:
answer:rcode(kres.rcode.NOERROR)
answer:begin(kres.section.ANSWER)
- answer:put(qry.sname, ttl, qry.sclass, qry.stype, data.rdata)
+ if type(data.rdata) == 'table' then
+ for _, rdato in ipairs(data.rdata) do
+ answer:put(qry.sname, ttl, qry.sclass, qry.stype, rdato)
+ end
+ else
+ answer:put(qry.sname, ttl, qry.sclass, qry.stype, data.rdata)
+ end
return kres.DONE
end