diff options
| author | Christian Breunig <christian@breunig.cc> | 2024-12-11 20:14:45 +0100 |
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2024-12-16 22:24:50 +0100 |
| commit | 55683a8406e17408021437cb35b57c48bd8b2ab1 (patch) | |
| tree | bc149befb6ceadc94bf57503c65dd9267339edf0 /src/conf_mode/protocols_static.py | |
| parent | 779f311e7fe81e3c85de28f13e4e12e33b255483 (diff) | |
| download | veeos-1x-55683a8406e17408021437cb35b57c48bd8b2ab1.tar.gz veeos-1x-55683a8406e17408021437cb35b57c48bd8b2ab1.zip | |
configd: T6746: handle FRR config reload as last step in commit
Diffstat (limited to 'src/conf_mode/protocols_static.py')
| -rwxr-xr-x | src/conf_mode/protocols_static.py | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/src/conf_mode/protocols_static.py b/src/conf_mode/protocols_static.py index 69500377c..29fa530f4 100755 --- a/src/conf_mode/protocols_static.py +++ b/src/conf_mode/protocols_static.py @@ -29,10 +29,6 @@ from vyos import ConfigError from vyos import airbag airbag.enable() -vrf = None -if len(argv) > 1: - vrf = argv[1] - config_file = '/etc/iproute2/rt_tables.d/vyos-static.conf' def get_config(config=None): @@ -41,13 +37,16 @@ def get_config(config=None): else: conf = Config() - return get_frrender_dict(conf) + return get_frrender_dict(conf, argv) def verify(config_dict): - global vrf - if not has_frr_protocol_in_dict(config_dict, 'static', vrf): + if not has_frr_protocol_in_dict(config_dict, 'static'): return None + vrf = None + if 'vrf_context' in config_dict: + vrf = config_dict['vrf_context'] + # eqivalent of the C foo ? 'a' : 'b' statement static = vrf and config_dict['vrf']['name'][vrf]['protocols']['static'] or config_dict['static'] static['policy'] = config_dict['policy'] @@ -82,22 +81,25 @@ def verify(config_dict): return None def generate(config_dict): - global vrf - if not has_frr_protocol_in_dict(config_dict, 'static', vrf): + if not has_frr_protocol_in_dict(config_dict, 'static'): return None + vrf = None + if 'vrf_context' in config_dict: + vrf = config_dict['vrf_context'] + # eqivalent of the C foo ? 'a' : 'b' statement static = vrf and config_dict['vrf']['name'][vrf]['protocols']['static'] or config_dict['static'] # Put routing table names in /etc/iproute2/rt_tables render(config_file, 'iproute2/static.conf.j2', static) - if 'frrender_cls' not in config_dict: + if config_dict and 'frrender_cls' not in config_dict: FRRender().generate(config_dict) return None -def apply(static): - if 'frrender_cls' not in config_dict: +def apply(config_dict): + if config_dict and 'frrender_cls' not in config_dict: FRRender().apply() return None |
