diff options
author | Christian Breunig <christian@breunig.cc> | 2024-03-24 21:01:37 +0100 |
---|---|---|
committer | Christian Breunig <christian@breunig.cc> | 2024-03-24 21:01:37 +0100 |
commit | c6d8d9c012da1a7566eec2dff70385457f073e64 (patch) | |
tree | 151278c3a201927c71f4fd3caa26a1474b2b1a53 /src/conf_mode/protocols_ospf.py | |
parent | afaf715194a922c92f6ff6058abc0e4b9ff570d4 (diff) | |
download | vyos-1x-c6d8d9c012da1a7566eec2dff70385457f073e64.tar.gz vyos-1x-c6d8d9c012da1a7566eec2dff70385457f073e64.zip |
ospf: T6066: can not define the same network in different areas
Users can not (FRR fails) commit the same network belonging to different OSPF
areas. Add verify() check to prevent this.
Diffstat (limited to 'src/conf_mode/protocols_ospf.py')
-rwxr-xr-x | src/conf_mode/protocols_ospf.py | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/conf_mode/protocols_ospf.py b/src/conf_mode/protocols_ospf.py index 695842795..6fffe7e0d 100755 --- a/src/conf_mode/protocols_ospf.py +++ b/src/conf_mode/protocols_ospf.py @@ -127,6 +127,7 @@ def verify(ospf): # Validate if configured Access-list exists if 'area' in ospf: + networks = [] for area, area_config in ospf['area'].items(): if 'import_list' in area_config: acl_import = area_config['import_list'] @@ -135,6 +136,12 @@ def verify(ospf): acl_export = area_config['export_list'] if acl_export: verify_access_list(acl_export, ospf) + if 'network' in area_config: + for network in area_config['network']: + if network in networks: + raise ConfigError(f'Network "{network}" already defined in different area!') + networks.append(network) + if 'interface' in ospf: for interface, interface_config in ospf['interface'].items(): verify_interface_exists(interface) |