From dd3918ae34a2fb60893874a9141016ee5b5f32c0 Mon Sep 17 00:00:00 2001 From: sarthurdev <965089+sarthurdev@users.noreply.github.com> Date: Sat, 11 Oct 2025 20:59:14 +0200 Subject: kea: T7925: Improve error handling, validate IPv6 PD prefix length --- python/vyos/kea.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'python') diff --git a/python/vyos/kea.py b/python/vyos/kea.py index 5ce6f47f1..f48cf293d 100644 --- a/python/vyos/kea.py +++ b/python/vyos/kea.py @@ -15,6 +15,7 @@ import json import os +import re import socket from datetime import datetime @@ -25,7 +26,7 @@ from vyos.template import is_ipv6 from vyos.template import netmask_from_cidr from vyos.utils.dict import dict_search_args from vyos.utils.file import file_permissions -from vyos.utils.process import run +from vyos.utils.process import run, rc_cmd kea4_options = { 'name_server': 'domain-name-servers', @@ -86,6 +87,14 @@ def _find_list_of_dict_index(lst, key='ip', value=''): idx = next((index for (index, d) in enumerate(lst) if d[key] == value), None) return idx +def kea_test_config(process: str, config_path: str) -> tuple[bool, str]: + result, output = rc_cmd(f'{process} -t {config_path}') + + if result == 0: + return (True, None) + + find = re.search(r'Error encountered:\s([^\n$]+)', output) + return (False, find[1] if find else None) def kea_parse_options(config): options = [] -- cgit v1.2.3