summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2025-11-26 21:12:21 +0100
committerGitHub <noreply@github.com>2025-11-26 21:12:21 +0100
commit1f03d36aca57dd07cfb8b273e3c5be2200047be4 (patch)
tree7141d0ba45b77ce483ab4459c73e2a0f43b21d1b /src
parentac73349435651789d240f2c4f72fe6f7bcdd6661 (diff)
parentcc4d2167cf756d37cc60c3e415b2ac30f622b85b (diff)
downloadvyos-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-xsrc/conf_mode/protocols_bgp.py5
-rwxr-xr-xsrc/conf_mode/protocols_eigrp.py4
-rwxr-xr-xsrc/conf_mode/protocols_isis.py3
-rwxr-xr-xsrc/conf_mode/protocols_ospf.py3
-rwxr-xr-xsrc/conf_mode/protocols_ospfv3.py3
-rwxr-xr-xsrc/conf_mode/protocols_rpki.py7
-rwxr-xr-xsrc/conf_mode/protocols_static.py9
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()