*.static4.example.com IN LUA A "filterForward(createForward(), newNMG({'192.0.2.0/24', '10.0.0.0/8'}))"
+ Since 4.9.0: if the fallback parameter is an empty string, ``filterForward`` returns an empty set, yielding a NODATA answer.
+ You cannot combine this feature with DNSSEC.
+
Helper functions
~~~~~~~~~~~~~~~~
ComboAddress ca(address);
if (nmg.match(ComboAddress(address))) {
- return address;
+ return vector<string>{address};
} else {
if (fallback) {
- return *fallback;
+ if (fallback->empty()) {
+ // if fallback is an empty string, return an empty array
+ return vector<string>{};
+ }
+ return vector<string>{*fallback};
}
if (ca.isIPv4()) {
- return string("0.0.0.0");
+ return vector<string>{string("0.0.0.0")};
} else {
- return string("::");
+ return vector<string>{string("::")};
}
}
});
resolve IN LUA A ";local r=resolve('localhost', 1) local t={{}} for _,v in ipairs(r) do table.insert(t, v:toString()) end return t"
+filterforwardempty IN LUA A "filterForward('192.0.2.1', newNMG{{'192.1.2.0/24'}}, '')"
+
*.createforward IN LUA A "filterForward(createForward(), newNMG{{'1.0.0.0/8', '64.0.0.0/8'}})"
*.createreverse IN LUA PTR "createReverse('%5%.example.com', {{['10.10.10.10'] = 'quad10.example.com.'}})"
*.createreverse6 IN LUA PTR "createReverse6('%33%.example.com', {{['2001:db8::1'] = 'example.example.com.'}})"
self.assertRcodeEqual(res, dns.rcode.NOERROR)
self.assertEqual(res.answer, response.answer)
+ def testFilterForwardEmpty(self):
+ """
+ Test filterForward() function with empty fallback
+ """
+ name = 'filterforwardempty.example.org.'
+
+ query = dns.message.make_query(name, 'A')
+
+ res = self.sendUDPQuery(query)
+ self.assertRcodeEqual(res, dns.rcode.NOERROR)
+ self.assertEqual(res.answer, [])
+
def testCreateForwardAndReverse(self):
expected = {
".createforward.example.org." : (dns.rdatatype.A, {