diff options
author | Christian Breunig <christian@breunig.cc> | 2024-08-13 06:01:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-13 06:01:17 +0200 |
commit | 8baa5b535430d1a14f16004174cb91f3e6d266ca (patch) | |
tree | f57107a8720b70e3c21cc57defc94a4e89830491 /src/conf_mode | |
parent | e1d5cb8b56a6b103afa7326d94291e64bd2eba47 (diff) | |
parent | b4b200caea708eb983a9fe9c292a013dca7abb43 (diff) | |
download | vyos-1x-8baa5b535430d1a14f16004174cb91f3e6d266ca.tar.gz vyos-1x-8baa5b535430d1a14f16004174cb91f3e6d266ca.zip |
Merge pull request #3957 from vyos/mergify/bp/sagitta/pr-3916
T6619: Remove the remaining uses of per-protocol FRR configs (backport #3916)
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/protocols_static_multicast.py | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/conf_mode/protocols_static_multicast.py b/src/conf_mode/protocols_static_multicast.py index 7f6ae3680..2bf794042 100755 --- a/src/conf_mode/protocols_static_multicast.py +++ b/src/conf_mode/protocols_static_multicast.py @@ -20,9 +20,10 @@ from ipaddress import IPv4Address from sys import exit from vyos import ConfigError +from vyos import frr from vyos.config import Config from vyos.utils.process import call -from vyos.template import render +from vyos.template import render, render_to_string from vyos import airbag airbag.enable() @@ -92,23 +93,39 @@ def verify(mroute): if IPv4Address(route[0]) < IPv4Address('224.0.0.0'): raise ConfigError(route + " not a multicast network") + def generate(mroute): if mroute is None: return None - render(config_file, 'frr/static_mcast.frr.j2', mroute) + mroute['new_frr_config'] = render_to_string('frr/static_mcast.frr.j2', mroute) return None + def apply(mroute): if mroute is None: return None + static_daemon = 'staticd' + + frr_cfg = frr.FRRConfig() + frr_cfg.load_configuration(static_daemon) - if os.path.exists(config_file): - call(f'vtysh -d staticd -f {config_file}') - os.remove(config_file) + if 'old_mroute' in mroute: + for route_gr in mroute['old_mroute']: + for nh in mroute['old_mroute'][route_gr]: + if mroute['old_mroute'][route_gr][nh]: + frr_cfg.modify_section(f'^ip mroute {route_gr} {nh} {mroute["old_mroute"][route_gr][nh]}') + else: + frr_cfg.modify_section(f'^ip mroute {route_gr} {nh}') + + if 'new_frr_config' in mroute: + frr_cfg.add_before(frr.default_add_before, mroute['new_frr_config']) + + frr_cfg.commit_configuration(static_daemon) return None + if __name__ == '__main__': try: c = get_config() |