summaryrefslogtreecommitdiff
path: root/src/conf_mode
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2023-04-21 22:46:43 +0200
committerChristian Breunig <christian@breunig.cc>2023-04-21 22:47:59 +0200
commitfcfd07ef80209e489d836f9c82d8779ccce0a137 (patch)
tree9cbe5050fd661cf56321c6d217bb00c5efa48312 /src/conf_mode
parent66bc0d231aa177cc5c44d17d1fef0d0d2d873773 (diff)
downloadvyos-1x-fcfd07ef80209e489d836f9c82d8779ccce0a137.tar.gz
vyos-1x-fcfd07ef80209e489d836f9c82d8779ccce0a137.zip
vrf: T5150: fix regex used on frr-reload when searching for discrete VRF
We must only search and replace for "vrf red" or "vrf green" - the regex used infact matched on all VRFs which is wrong. This would remove all VRF VNI configurations when only changing a single VRf.
Diffstat (limited to 'src/conf_mode')
-rw-r--r--src/conf_mode/vrf_vni.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/conf_mode/vrf_vni.py b/src/conf_mode/vrf_vni.py
index 56069ecbd..0cf52a2ef 100644
--- a/src/conf_mode/vrf_vni.py
+++ b/src/conf_mode/vrf_vni.py
@@ -35,18 +35,27 @@ def get_config(config=None):
vrf_name = argv[1]
base = ['vrf', 'name', vrf_name]
+ tmp = conf.get_config_dict(base, key_mangling=('-', '_'), get_first_key=False)
+ if not tmp:
+ return None
vrf = { 'name' : conf.get_config_dict(base, key_mangling=('-', '_'),
get_first_key=False) }
return vrf
def verify(vrf):
+ if not vrf:
+ return
+
if len(argv) < 2:
raise ConfigError('VRF parameter not specified when valling vrf_vni.py')
return None
def generate(vrf):
+ if not vrf:
+ return
+
vrf['new_frr_config'] = render_to_string('frr/zebra.vrf.route-map.frr.j2', vrf)
return None
@@ -56,8 +65,11 @@ def apply(vrf):
# add configuration to FRR
frr_cfg = frr.FRRConfig()
frr_cfg.load_configuration(frr_daemon)
- frr_cfg.modify_section(f'^vrf .+', stop_pattern='^exit-vrf', remove_stop_mark=True)
- if 'new_frr_config' in vrf:
+ # There is only one VRF inside the dict as we read only one in get_config()
+ if vrf and 'name' in vrf:
+ vrf_name = next(iter(vrf['name']))
+ frr_cfg.modify_section(f'^vrf {vrf_name}', stop_pattern='^exit-vrf', remove_stop_mark=True)
+ if vrf and 'new_frr_config' in vrf:
frr_cfg.add_before(frr.default_add_before, vrf['new_frr_config'])
frr_cfg.commit_configuration(frr_daemon)