summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2026-03-25 20:39:22 +0100
committerGitHub <noreply@github.com>2026-03-25 20:39:22 +0100
commit2e100ed0c3b9b02bd9722092b8db10b38d7b0977 (patch)
tree71c3db1ef120f894bcd7832a05d85708248cd87c /src
parent210547f31ef45e6bb42b44bdaa8a8864179a8bbc (diff)
parentf719b7d839c41293f132af1fd1857b6c1ff2b1ea (diff)
downloadvyos-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-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':