summaryrefslogtreecommitdiff
path: root/src/conf_mode/nat_cgnat.py
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2024-05-17 10:14:45 +0200
committerGitHub <noreply@github.com>2024-05-17 10:14:45 +0200
commitf438fc3cd360f05cdc80e86c61c447d5d04857d7 (patch)
tree8c8d08f83996fe2993206d15ee6f98723933953f /src/conf_mode/nat_cgnat.py
parent4af8d98e8f4038ed680557e3b96be6b455be84f8 (diff)
parentc4cee2b7c51567350943a0387068f57d04456d12 (diff)
downloadvyos-1x-f438fc3cd360f05cdc80e86c61c447d5d04857d7.tar.gz
vyos-1x-f438fc3cd360f05cdc80e86c61c447d5d04857d7.zip
Merge pull request #3464 from sever-sever/T6351
T6351: CGNAT add verification if the pool exists
Diffstat (limited to 'src/conf_mode/nat_cgnat.py')
-rwxr-xr-xsrc/conf_mode/nat_cgnat.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/conf_mode/nat_cgnat.py b/src/conf_mode/nat_cgnat.py
index 8292f23a4..9a20a3c54 100755
--- a/src/conf_mode/nat_cgnat.py
+++ b/src/conf_mode/nat_cgnat.py
@@ -203,6 +203,11 @@ def verify(config):
f'Range for "{pool} pool {pool_name}" must be defined!'
)
+ external_pools_query = "keys(pool.external)"
+ external_pools: list = jmespath.search(external_pools_query, config)
+ internal_pools_query = "keys(pool.internal)"
+ internal_pools: list = jmespath.search(internal_pools_query, config)
+
for rule, rule_config in config['rule'].items():
if 'source' not in rule_config:
raise ConfigError(f'Rule "{rule}" source pool must be defined!')
@@ -212,6 +217,14 @@ def verify(config):
if 'translation' not in rule_config:
raise ConfigError(f'Rule "{rule}" translation pool must be defined!')
+ internal_pool = rule_config['source']['pool']
+ if internal_pool not in internal_pools:
+ raise ConfigError(f'Internal pool "{internal_pool}" does not exist!')
+
+ external_pool = rule_config['translation']['pool']
+ if external_pool not in external_pools:
+ raise ConfigError(f'External pool "{external_pool}" does not exist!')
+
def generate(config):
if not config: