summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2026-04-09 15:40:58 +0100
committerGitHub <noreply@github.com>2026-04-09 15:40:58 +0100
commit36c22d25b1f3e3685810a32248a88ee02fe06983 (patch)
treee6b7a8936fd2dc4337a5e46d6f50effec9ada2d1 /src
parent3b0fbd0266db5f701f63db00daba839702e9ee7e (diff)
parent48732ec28fc24fc54e719acb94b23abc3ddc18da (diff)
downloadvyos-1x-36c22d25b1f3e3685810a32248a88ee02fe06983.tar.gz
vyos-1x-36c22d25b1f3e3685810a32248a88ee02fe06983.zip
Merge pull request #5004 from jd82k/ndproxy
T8292: Fix ndp-proxy verify key mismatch for prefix rules
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/service_ndp-proxy.py39
1 files changed, 27 insertions, 12 deletions
diff --git a/src/conf_mode/service_ndp-proxy.py b/src/conf_mode/service_ndp-proxy.py
index f42ee9be8..672f98c71 100755
--- a/src/conf_mode/service_ndp-proxy.py
+++ b/src/conf_mode/service_ndp-proxy.py
@@ -48,18 +48,33 @@ def verify(ndpp):
if not ndpp:
return None
- if 'interface' in ndpp:
- for interface, interface_config in ndpp['interface'].items():
- verify_interface_exists(ndpp, interface)
-
- if 'rule' in interface_config:
- for rule, rule_config in interface_config['rule'].items():
- if rule_config['mode'] == 'interface' and 'interface' not in rule_config:
- raise ConfigError(f'Rule "{rule}" uses interface mode but no interface defined!')
-
- if rule_config['mode'] != 'interface' and 'interface' in rule_config:
- if interface_config['mode'] != 'interface' and 'interface' in interface_config:
- raise ConfigError(f'Rule "{rule}" does not use interface mode, thus interface can not be defined!')
+ if 'interface' not in ndpp:
+ return None
+
+ for interface, interface_config in ndpp['interface'].items():
+ if 'disable' in interface_config:
+ continue
+
+ verify_interface_exists(ndpp, interface)
+
+ if 'prefix' not in interface_config:
+ continue
+
+ for prefix, prefix_config in interface_config['prefix'].items():
+ if 'disable' in prefix_config:
+ continue
+
+ mode = prefix_config.get('mode')
+ prefix_interface = prefix_config.get('interface')
+
+ if mode == 'interface':
+ if not prefix_interface:
+ raise ConfigError(f'Prefix "{prefix}" uses interface mode but no interface defined!')
+ verify_interface_exists(ndpp, prefix_interface)
+ continue
+
+ if prefix_interface:
+ raise ConfigError(f'Prefix "{prefix}" does not use interface mode, thus interface can not be defined!')
return None