diff options
author | Daniil Baturin <daniil@vyos.io> | 2024-05-12 16:27:26 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-12 16:27:26 +0200 |
commit | 2105a8b29a0d616a8640ecc86683f8c9da8b52ea (patch) | |
tree | 9cf970944d3c213ee163e55781d0f7cc04ad4a5e /src/conf_mode | |
parent | 4fc9d38edecd5775a8446d8099c89043eedd9b5d (diff) | |
parent | 5565f27d15c5e7378e94aae8db8a894a12e25d7b (diff) | |
download | vyos-1x-2105a8b29a0d616a8640ecc86683f8c9da8b52ea.tar.gz vyos-1x-2105a8b29a0d616a8640ecc86683f8c9da8b52ea.zip |
Merge pull request #3447 from c-po/evpn-uplink-t6306
ethernet: T6306: add support for EVPN MH uplink/core tracking
Diffstat (limited to 'src/conf_mode')
-rwxr-xr-x | src/conf_mode/interfaces_ethernet.py | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/conf_mode/interfaces_ethernet.py b/src/conf_mode/interfaces_ethernet.py index 6da7e6a69..54d0669cb 100755 --- a/src/conf_mode/interfaces_ethernet.py +++ b/src/conf_mode/interfaces_ethernet.py @@ -41,6 +41,7 @@ from vyos.pki import encode_certificate from vyos.pki import load_certificate from vyos.pki import wrap_private_key from vyos.template import render +from vyos.template import render_to_string from vyos.utils.process import call from vyos.utils.dict import dict_search from vyos.utils.dict import dict_to_paths_values @@ -48,6 +49,7 @@ from vyos.utils.dict import dict_set from vyos.utils.dict import dict_delete from vyos.utils.file import write_file from vyos import ConfigError +from vyos import frr from vyos import airbag airbag.enable() @@ -389,6 +391,10 @@ def generate(ethernet): write_file(ca_cert_file_path, '\n'.join(ca_chains)) + ethernet['frr_zebra_config'] = '' + if 'deleted' not in ethernet: + ethernet['frr_zebra_config'] = render_to_string('frr/evpn.mh.frr.j2', ethernet) + return None def apply(ethernet): @@ -407,6 +413,17 @@ def apply(ethernet): call(f'systemctl {eapol_action} wpa_supplicant-wired@{ifname}') + zebra_daemon = 'zebra' + # Save original configuration prior to starting any commit actions + frr_cfg = frr.FRRConfig() + + # The route-map used for the FIB (zebra) is part of the zebra daemon + frr_cfg.load_configuration(zebra_daemon) + frr_cfg.modify_section(f'^interface {ifname}', stop_pattern='^exit', remove_stop_mark=True) + if 'frr_zebra_config' in ethernet: + frr_cfg.add_before(frr.default_add_before, ethernet['frr_zebra_config']) + frr_cfg.commit_configuration(zebra_daemon) + if __name__ == '__main__': try: c = get_config() |