diff options
| author | Christian Breunig <christian@breunig.cc> | 2026-03-25 20:39:22 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-25 20:39:22 +0100 |
| commit | 2e100ed0c3b9b02bd9722092b8db10b38d7b0977 (patch) | |
| tree | 71c3db1ef120f894bcd7832a05d85708248cd87c /src | |
| parent | 210547f31ef45e6bb42b44bdaa8a8864179a8bbc (diff) | |
| parent | f719b7d839c41293f132af1fd1857b6c1ff2b1ea (diff) | |
| download | vyos-1x-2e100ed0c3b9b02bd9722092b8db10b38d7b0977.tar.gz vyos-1x-2e100ed0c3b9b02bd9722092b8db10b38d7b0977.zip | |
Merge pull request #5078 from natali-rs1985/T8379
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': |
