diff --git a/routlin/core.py b/routlin/core.py index 5d0db45..76737f1 100644 --- a/routlin/core.py +++ b/routlin/core.py @@ -203,10 +203,15 @@ def resolve_vlan_options(vlan): } overrides = vlan.get("dhcp_information", {}).get("explicit_overrides", {}) default = lowest_quartet_ip(vlan) + def _resolve(key): + v = overrides.get(key, "") + if isinstance(v, list): + return ','.join(v) if v else default + return v or default return { - "gateway": overrides.get("gateway", "") or default, - "dns_server": overrides.get("dns_server", "") or default, - "ntp_server": overrides.get("ntp_server", "") or default, + "gateway": overrides.get("gateway", "") or default, + "dns_server": _resolve("dns_server"), + "ntp_server": _resolve("ntp_server"), } def is_physical(vlan): diff --git a/routlin/validation.py b/routlin/validation.py index 8f80a61..4ea742a 100644 --- a/routlin/validation.py +++ b/routlin/validation.py @@ -566,10 +566,12 @@ def validate_config(data): ) dns = eo.get("dns_server", "") if dns: - check_ip("explicit_overrides.dns_server", dns) + for _ip in (dns if isinstance(dns, list) else [dns]): + check_ip("explicit_overrides.dns_server", _ip) ntp = eo.get("ntp_server", "") if ntp: - check_ip("explicit_overrides.ntp_server", ntp) + for _ip in (ntp if isinstance(ntp, list) else [ntp]): + check_ip("explicit_overrides.ntp_server", _ip) pool_start = check_ip("dynamic_pool_start", d["dynamic_pool_start"]) pool_end = check_ip("dynamic_pool_end", d["dynamic_pool_end"])