diff options
| author | Christian Breunig <christian@breunig.cc> | 2025-11-26 21:12:21 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-26 21:12:21 +0100 |
| commit | 1f03d36aca57dd07cfb8b273e3c5be2200047be4 (patch) | |
| tree | 7141d0ba45b77ce483ab4459c73e2a0f43b21d1b /src | |
| parent | ac73349435651789d240f2c4f72fe6f7bcdd6661 (diff) | |
| parent | cc4d2167cf756d37cc60c3e415b2ac30f622b85b (diff) | |
| download | vyos-1x-1f03d36aca57dd07cfb8b273e3c5be2200047be4.tar.gz vyos-1x-1f03d36aca57dd07cfb8b273e3c5be2200047be4.zip | |
Merge pull request #4869 from c-po/T8034
frr: T8034: use dict_search() for routing protocols to check if VRF is used
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/protocols_bgp.py | 5 | ||||
| -rwxr-xr-x | src/conf_mode/protocols_eigrp.py | 4 | ||||
| -rwxr-xr-x | src/conf_mode/protocols_isis.py | 3 | ||||
| -rwxr-xr-x | src/conf_mode/protocols_ospf.py | 3 | ||||
| -rwxr-xr-x | src/conf_mode/protocols_ospfv3.py | 3 | ||||
| -rwxr-xr-x | src/conf_mode/protocols_rpki.py | 7 | ||||
| -rwxr-xr-x | src/conf_mode/protocols_static.py | 9 |
7 files changed, 23 insertions, 11 deletions
diff --git a/src/conf_mode/protocols_bgp.py b/src/conf_mode/protocols_bgp.py index fe5740a18..a7b9ea39b 100755 --- a/src/conf_mode/protocols_bgp.py +++ b/src/conf_mode/protocols_bgp.py @@ -184,7 +184,8 @@ def verify(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - bgp = vrf and config_dict['vrf']['name'][vrf]['protocols']['bgp'] or config_dict['bgp'] + bgp = vrf and dict_search(f'vrf.name.{vrf}.protocols.bgp', + config_dict) or config_dict['bgp'] bgp['policy'] = config_dict['policy'] if 'deleted' in bgp: @@ -331,7 +332,7 @@ def verify(config_dict): peer_group = peer_config['interface']['v6only']['peer_group'] if 'remote_as' in peer_config['interface']['v6only'] and 'remote_as' in bgp['peer_group'][peer_group]: raise ConfigError(f'Peer-group member "{peer}" cannot override remote-as of peer-group "{peer_group}"!') - + for afi in ['ipv4_unicast', 'ipv4_multicast', 'ipv4_labeled_unicast', 'ipv4_flowspec', 'ipv6_unicast', 'ipv6_multicast', 'ipv6_labeled_unicast', 'ipv6_flowspec', 'l2vpn_evpn']: diff --git a/src/conf_mode/protocols_eigrp.py b/src/conf_mode/protocols_eigrp.py index e127a3a07..281909ceb 100755 --- a/src/conf_mode/protocols_eigrp.py +++ b/src/conf_mode/protocols_eigrp.py @@ -20,6 +20,7 @@ from sys import argv from vyos.config import Config from vyos.configverify import has_frr_protocol_in_dict from vyos.configverify import verify_vrf +from vyos.utils.dict import dict_search from vyos.utils.process import is_systemd_service_running from vyos.frrender import FRRender from vyos.frrender import get_frrender_dict @@ -44,7 +45,8 @@ def verify(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - eigrp = vrf and config_dict['vrf']['name'][vrf]['protocols']['eigrp'] or config_dict['eigrp'] + eigrp = vrf and dict_search(f'vrf.name.{vrf}.protocols.eigrp', + config_dict) or config_dict['eigrp'] eigrp['policy'] = config_dict['policy'] if 'system_as' not in eigrp: diff --git a/src/conf_mode/protocols_isis.py b/src/conf_mode/protocols_isis.py index f561d8458..4444a8e44 100755 --- a/src/conf_mode/protocols_isis.py +++ b/src/conf_mode/protocols_isis.py @@ -48,7 +48,8 @@ def verify(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - isis = vrf and config_dict['vrf']['name'][vrf]['protocols']['isis'] or config_dict['isis'] + isis = vrf and dict_search(f'vrf.name.{vrf}.protocols.isis', + config_dict) or config_dict['isis'] isis['policy'] = config_dict['policy'] if 'deleted' in isis: diff --git a/src/conf_mode/protocols_ospf.py b/src/conf_mode/protocols_ospf.py index 9421765a1..848079ba1 100755 --- a/src/conf_mode/protocols_ospf.py +++ b/src/conf_mode/protocols_ospf.py @@ -50,7 +50,8 @@ def verify(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - ospf = vrf and config_dict['vrf']['name'][vrf]['protocols']['ospf'] or config_dict['ospf'] + ospf = vrf and dict_search(f'vrf.name.{vrf}.protocols.ospf', + config_dict) or config_dict['ospf'] ospf['policy'] = config_dict['policy'] verify_common_route_maps(ospf) diff --git a/src/conf_mode/protocols_ospfv3.py b/src/conf_mode/protocols_ospfv3.py index 1d2eceb8f..2db7b1d42 100755 --- a/src/conf_mode/protocols_ospfv3.py +++ b/src/conf_mode/protocols_ospfv3.py @@ -49,7 +49,8 @@ def verify(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - ospfv3 = vrf and config_dict['vrf']['name'][vrf]['protocols']['ospfv3'] or config_dict['ospfv3'] + ospfv3 = vrf and dict_search(f'vrf.name.{vrf}.protocols.ospfv3', + config_dict) or config_dict['ospfv3'] ospfv3['policy'] = config_dict['policy'] verify_common_route_maps(ospfv3) diff --git a/src/conf_mode/protocols_rpki.py b/src/conf_mode/protocols_rpki.py index 5ba23c141..9b1abd752 100755 --- a/src/conf_mode/protocols_rpki.py +++ b/src/conf_mode/protocols_rpki.py @@ -26,6 +26,7 @@ from vyos.frrender import FRRender from vyos.frrender import get_frrender_dict from vyos.pki import wrap_openssh_public_key from vyos.pki import wrap_openssh_private_key +from vyos.utils.dict import dict_search from vyos.utils.dict import dict_search_args from vyos.utils.file import write_file from vyos.utils.process import is_systemd_service_running @@ -51,7 +52,8 @@ def verify(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - rpki = vrf and config_dict['vrf']['name'][vrf]['protocols']['rpki'] or config_dict['rpki'] + rpki = vrf and dict_search(f'vrf.name.{vrf}.protocols.rpki', + config_dict) or config_dict['rpki'] if 'cache' in rpki: preferences = [] @@ -90,7 +92,8 @@ def generate(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - rpki = vrf and config_dict['vrf']['name'][vrf]['protocols']['rpki'] or config_dict['rpki'] + rpki = vrf and dict_search(f'vrf.name.{vrf}.protocols.rpki', + config_dict) or config_dict['rpki'] if 'cache' in rpki: for cache, cache_config in rpki['cache'].items(): diff --git a/src/conf_mode/protocols_static.py b/src/conf_mode/protocols_static.py index 6310be13d..144c64efa 100755 --- a/src/conf_mode/protocols_static.py +++ b/src/conf_mode/protocols_static.py @@ -25,8 +25,9 @@ from vyos.configverify import verify_common_route_maps from vyos.configverify import verify_vrf from vyos.frrender import FRRender from vyos.frrender import get_frrender_dict -from vyos.utils.process import is_systemd_service_running +from vyos.utils.dict import dict_search from vyos.utils.file import write_file +from vyos.utils.process import is_systemd_service_running from vyos.template import render from vyos import ConfigError from vyos import airbag @@ -53,7 +54,8 @@ def verify(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - static = vrf and config_dict['vrf']['name'][vrf]['protocols']['static'] or config_dict['static'] + static = vrf and dict_search(f'vrf.name.{vrf}.protocols.static', + config_dict) or config_dict['static'] static['policy'] = config_dict['policy'] verify_common_route_maps(static) @@ -94,7 +96,8 @@ def generate(config_dict): vrf = config_dict['vrf_context'] # eqivalent of the C foo ? 'a' : 'b' statement - static = vrf and config_dict['vrf']['name'][vrf]['protocols']['static'] or config_dict['static'] + static = vrf and dict_search(f'vrf.name.{vrf}.protocols.static', + config_dict) or config_dict['static'] # Collect interfaces that have DHCP configuration for DHCP hooks dhcp_interfaces = set() |
