From ef6879ca4cd510125e7e4337ecaaa5df9692f27e Mon Sep 17 00:00:00 2001 From: Nataliia Solomko Date: Thu, 25 Sep 2025 12:24:53 +0300 Subject: T7815: VPP: NAT44 rules with port requires protocol specification and vice versa --- src/conf_mode/vpp_nat.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/conf_mode/vpp_nat.py b/src/conf_mode/vpp_nat.py index 7c9fd2765..8d18aa1fe 100644 --- a/src/conf_mode/vpp_nat.py +++ b/src/conf_mode/vpp_nat.py @@ -257,6 +257,12 @@ def verify(config): 'both be specified, or neither must be specified' ) + # Either both protocol and ports are set, or both no protocol and no ports + if (rule_config['protocol'] != 'all') != has_local_port: + raise ConfigError( + f'{error_msg} protocol and ports must either both be specified or both omitted' + ) + ext_address = rule_config['external']['address'] port = rule_config['external'].get('port') local_address = rule_config['local']['address'] @@ -335,6 +341,12 @@ def verify(config): f'{rule_config["external_interface"]} must be a VPP interface for exclude rule {rule}' ) + # Either both protocol and local-port are set, or both no protocol and no port + if (rule_config['protocol'] != 'all') != ('local_port' in rule_config): + raise ConfigError( + f'Protocol and local-port must either both be specified or both omitted for exclude rule {rule}' + ) + def generate(config): pass -- cgit v1.2.3