diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2026-03-23 14:29:11 +0200 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2026-03-23 14:29:11 +0200 |
| commit | f719b7d839c41293f132af1fd1857b6c1ff2b1ea (patch) | |
| tree | af2eac1a3d1c84e4c7a74ebc017a7449c911c003 /src | |
| parent | fc06cc45148a42171baf9f4ae01da33c3f0df1aa (diff) | |
| download | vyos-1x-f719b7d839c41293f132af1fd1857b6c1ff2b1ea.tar.gz vyos-1x-f719b7d839c41293f132af1fd1857b6c1ff2b1ea.zip | |
T8379: PBR commit fail with traceback if non-existing VRF added
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/policy_route.py | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/conf_mode/policy_route.py b/src/conf_mode/policy_route.py index 17f8e6bf9..480f3ecf2 100755 --- a/src/conf_mode/policy_route.py +++ b/src/conf_mode/policy_route.py @@ -29,6 +29,7 @@ from vyos.utils.dict import dict_search_recursive from vyos.utils.process import cmd from vyos.utils.process import run from vyos.utils.network import get_vrf_tableid +from vyos.utils.network import interface_exists from vyos.defaults import rt_global_table from vyos.defaults import rt_global_vrf from vyos.geoip import geoip_refresh, geoip_update @@ -131,6 +132,11 @@ def verify_rule(policy, name, rule_conf, ipv6, rule_id): if 'vrf' in rule_conf['set'] and 'table' in rule_conf['set']: raise ConfigError(f'{name} rule {rule_id}: Cannot set both forwarding route table and VRF') + if 'vrf' in rule_conf['set']: + vrf = rule_conf['set']['vrf'] + if vrf != 'default' and not interface_exists(vrf): + raise ConfigError(f'{name} rule {rule_id}: VRF "{vrf}" does not exist') + tcp_flags = dict_search_args(rule_conf, 'tcp', 'flags') if tcp_flags: if dict_search_args(rule_conf, 'protocol') != 'tcp': |
