From deeff86ce0e07382dba5fe5703ad09895a9615c8 Mon Sep 17 00:00:00 2001 From: chariri Date: Sun, 16 Aug 2026 05:51:03 +0900 Subject: dns: T8045: expose PowerDNS dont-query list as recursion-exclude-address The `+=` append syntax is used for appending. To remove from the defaults, users can use negation. --- .../scripts/cli/test_service_dns_forwarding.py | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'smoketest/scripts/cli') diff --git a/smoketest/scripts/cli/test_service_dns_forwarding.py b/smoketest/scripts/cli/test_service_dns_forwarding.py index 52134d8c8..33b960da9 100755 --- a/smoketest/scripts/cli/test_service_dns_forwarding.py +++ b/smoketest/scripts/cli/test_service_dns_forwarding.py @@ -248,6 +248,44 @@ class TestServicePowerDNS(VyOSUnitTestSHIM.TestCase): tmp = get_config_value('dns64-prefix') self.assertEqual(tmp, dns_prefix) + def test_recursion_exclude_address(self): + recursion_exclude_address = [ + '198.18.0.0/15', + '!127.0.0.0/8', + '2001:db8:ffff::1', + '!2001:db8::/32', + ] + for network in recursion_exclude_address: + self.cli_set(base_path + ['recursion-exclude-address', network]) + + self.cli_commit() + + self.assertEqual( + get_config_value(r'dont-query\+'), ','.join(recursion_exclude_address) + ) + + # Removing all configured values must remove the incremental setting, + # allowing PowerDNS to use its native defaults again. + self.cli_delete(base_path + ['recursion-exclude-address']) + self.cli_commit() + config = read_file(CONFIG_FILE) + self.assertNotIn('\ndont-query=', config) + self.assertNotIn('\ndont-query+=', config) + + def test_recursion_exclude_address_conflicting_entry_order(self): + self.cli_set(base_path + ['recursion-exclude-address', '1.0.0.0/8']) + self.cli_set(base_path + ['recursion-exclude-address', '!1.0.0.0/8']) + self.cli_commit() + self.assertEqual(get_config_value(r'dont-query\+'), '1.0.0.0/8,!1.0.0.0/8') + + self.cli_delete(base_path + ['recursion-exclude-address']) + self.cli_commit() + + self.cli_set(base_path + ['recursion-exclude-address', '!1.0.0.0/8']) + self.cli_set(base_path + ['recursion-exclude-address', '1.0.0.0/8']) + self.cli_commit() + self.assertEqual(get_config_value(r'dont-query\+'), '!1.0.0.0/8,1.0.0.0/8') + def test_exclude_throttle_adress(self): exclude_throttle_adress_examples = [ '192.168.128.255', -- cgit v1.2.3