summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJose Phillips <jose@latinol.com>2026-05-07 11:40:42 -0500
committerJose Phillips <jose@latinol.com>2026-05-13 19:36:11 +0000
commitb1f920457dc8ac62c36fae492cc3aa3ec10d051d (patch)
tree6f497cfd6ded5c2cfe4e112f8b08ab44c38357df /src
parent2f2bae3232862d07368e4508fa8f335f6f8819d4 (diff)
downloadvyos-1x-b1f920457dc8ac62c36fae492cc3aa3ec10d051d.tar.gz
vyos-1x-b1f920457dc8ac62c36fae492cc3aa3ec10d051d.zip
T8823: validation of GE and LE according FRR instructions
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/policy.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/conf_mode/policy.py b/src/conf_mode/policy.py
index 689365724..4da884e3e 100755
--- a/src/conf_mode/policy.py
+++ b/src/conf_mode/policy.py
@@ -167,6 +167,23 @@ def verify(config_dict):
if 'prefix' not in rule_config:
raise ConfigError(f'A prefix {mandatory_error}')
+ mask_len = int(rule_config['prefix'].split('/')[1])
+ ge = int(rule_config['ge']) if 'ge' in rule_config else None
+ le = int(rule_config['le']) if 'le' in rule_config else None
+
+ if ge is not None and ge < mask_len:
+ raise ConfigError(
+ f'{policy_hr} {instance} rule {rule}: "ge" ({ge}) must be >= '
+ f'prefix length ({mask_len})')
+ if le is not None and le < mask_len:
+ raise ConfigError(
+ f'{policy_hr} {instance} rule {rule}: "le" ({le}) must be >= '
+ f'prefix length ({mask_len})')
+ if ge is not None and le is not None and ge > le:
+ raise ConfigError(
+ f'{policy_hr} {instance} rule {rule}: "ge" ({ge}) must be <= '
+ f'"le" ({le})')
+
if rule_config in entries:
raise ConfigError(
f'Rule "{rule}" contains a duplicate prefix definition!')