summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRoman Khramshin <HollyGurza@users.noreply.github.com>2024-08-02 21:41:05 +0600
committerMergify <37929162+mergify[bot]@users.noreply.github.com>2024-08-08 07:43:13 +0000
commitb4b200caea708eb983a9fe9c292a013dca7abb43 (patch)
tree3b68adb08b9d4fa3bf7628362edb0e7e7cdc33b7 /src
parentc832da363ffb5538806b5025b92107a60152e44c (diff)
downloadvyos-1x-mergify/bp/sagitta/pr-3916.tar.gz
vyos-1x-mergify/bp/sagitta/pr-3916.zip
T6619: Remove the remaining uses of per-protocol FRR configs (#3916)mergify/bp/sagitta/pr-3916
(cherry picked from commit f2256ad338fc3fbaa9a5de2c0615603cd23e0f94)
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/protocols_static_multicast.py27
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()