diff options
author | Christian Poessinger <christian@poessinger.com> | 2021-03-14 14:57:13 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-14 14:57:13 +0100 |
commit | 2785a486f798c5e36d59c58720334f7bdffcbb3e (patch) | |
tree | 1510d0c47d32b6fd5153c8d7a1775cf367cb6022 /src/conf_mode/protocols_static.py | |
parent | 0f24c5b25bc277e0604608710cf81225d765b3be (diff) | |
parent | 7d67e8609471b6a5c9761a99301f368bd6747e13 (diff) | |
download | vyos-1x-2785a486f798c5e36d59c58720334f7bdffcbb3e.tar.gz vyos-1x-2785a486f798c5e36d59c58720334f7bdffcbb3e.zip |
Merge pull request #770 from c-po/vrf-dynamic-routing
VRF: support for dynamic routing protocols OSPF and BGP
Diffstat (limited to 'src/conf_mode/protocols_static.py')
-rwxr-xr-x | src/conf_mode/protocols_static.py | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/conf_mode/protocols_static.py b/src/conf_mode/protocols_static.py index 5d101b33e..51b4acfc8 100755 --- a/src/conf_mode/protocols_static.py +++ b/src/conf_mode/protocols_static.py @@ -17,6 +17,7 @@ import os from sys import exit +from sys import argv from vyos.config import Config from vyos.template import render_to_string @@ -34,8 +35,19 @@ def get_config(config=None): conf = config else: conf = Config() - base = ['protocols', 'static'] + + vrf = None + if len(argv) > 1: + vrf = argv[1] + + base_path = ['protocols', 'static'] + # eqivalent of the C foo ? 'a' : 'b' statement + base = vrf and ['vrf', 'name', vrf, 'protocols', 'static'] or base_path static = conf.get_config_dict(base, key_mangling=('-', '_'), get_first_key=True) + + # Assign the name of our VRF context + if vrf: static['vrf'] = vrf + return static def verify(static): @@ -50,8 +62,14 @@ def apply(static): # Save original configuration prior to starting any commit actions frr_cfg = frr.FRRConfig() frr_cfg.load_configuration(frr_daemon) - frr_cfg.modify_section(r'^ip route .*', '') - frr_cfg.modify_section(r'^ipv6 route .*', '') + + if 'vrf' in static: + vrf = static['vrf'] + frr_cfg.modify_section(f'^vrf {vrf}$', '') + else: + frr_cfg.modify_section(r'^ip route .*', '') + frr_cfg.modify_section(r'^ipv6 route .*', '') + frr_cfg.add_before(r'(interface .*|line vty)', static['new_frr_config']) frr_cfg.commit_configuration(frr_daemon) |