summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2026-03-23 14:29:11 +0200
committerNataliia Solomko <natalirs1985@gmail.com>2026-03-23 14:29:11 +0200
commitf719b7d839c41293f132af1fd1857b6c1ff2b1ea (patch)
treeaf2eac1a3d1c84e4c7a74ebc017a7449c911c003 /src
parentfc06cc45148a42171baf9f4ae01da33c3f0df1aa (diff)
downloadvyos-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-xsrc/conf_mode/policy_route.py6
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':