diff options
| author | Alex Bukharov <alex.bukharov@innablr.com.au> | 2025-04-23 00:40:06 +1000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-22 15:40:06 +0100 |
| commit | 427ebbb1e103ff45774bdf79bd5b1cddeff2f686 (patch) | |
| tree | 15fb24f4e330f6e7ebb4426996751fefe11cb149 /python/vyos/template.py | |
| parent | 39e2a908e5d141911820c20bb1a5a5b1b96fa457 (diff) | |
| download | veeos-1x-427ebbb1e103ff45774bdf79bd5b1cddeff2f686.tar.gz veeos-1x-427ebbb1e103ff45774bdf79bd5b1cddeff2f686.zip | |
T6773: RFC-2136 support for Kea DHCP4 server (#4153)
Diffstat (limited to 'python/vyos/template.py')
| -rwxr-xr-x | python/vyos/template.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/python/vyos/template.py b/python/vyos/template.py index 7ba85a046..d79e1183f 100755 --- a/python/vyos/template.py +++ b/python/vyos/template.py @@ -859,10 +859,77 @@ def kea_high_availability_json(config): return dumps(data) +@register_filter('kea_dynamic_dns_update_main_json') +def kea_dynamic_dns_update_main_json(config): + from vyos.kea import kea_parse_ddns_settings + from json import dumps + + data = kea_parse_ddns_settings(config) + + if len(data) == 0: + return '' + + return dumps(data, indent=8)[1:-1] + ',' + +@register_filter('kea_dynamic_dns_update_tsig_key_json') +def kea_dynamic_dns_update_tsig_key_json(config): + from vyos.kea import kea_parse_tsig_algo + from json import dumps + out = [] + + if 'tsig_key' not in config: + return dumps(out) + + tsig_keys = config['tsig_key'] + + for tsig_key_name, tsig_key_config in tsig_keys.items(): + tsig_key = { + 'name': tsig_key_name, + 'algorithm': kea_parse_tsig_algo(tsig_key_config['algorithm']), + 'secret': tsig_key_config['secret'] + } + out.append(tsig_key) + + return dumps(out, indent=12) + +@register_filter('kea_dynamic_dns_update_domains') +def kea_dynamic_dns_update_domains(config, type_key): + from json import dumps + out = [] + + if type_key not in config: + return dumps(out) + + domains = config[type_key] + + for domain_name, domain_config in domains.items(): + domain = { + 'name': domain_name, + + } + if 'key_name' in domain_config: + domain['key-name'] = domain_config['key_name'] + + if 'dns_server' in domain_config: + dns_servers = [] + for dns_server_config in domain_config['dns_server'].values(): + dns_server = { + 'ip-address': dns_server_config['address'] + } + if 'port' in dns_server_config: + dns_server['port'] = int(dns_server_config['port']) + dns_servers.append(dns_server) + domain['dns-servers'] = dns_servers + + out.append(domain) + + return dumps(out, indent=12) + @register_filter('kea_shared_network_json') def kea_shared_network_json(shared_networks): from vyos.kea import kea_parse_options from vyos.kea import kea_parse_subnet + from vyos.kea import kea_parse_ddns_settings from json import dumps out = [] @@ -877,6 +944,9 @@ def kea_shared_network_json(shared_networks): 'user-context': {} } + if 'dynamic_dns_update' in config: + network.update(kea_parse_ddns_settings(config['dynamic_dns_update'])) + if 'option' in config: network['option-data'] = kea_parse_options(config['option']) |
