From b32c568ba77bd2d684a0794b47f48b537251b271 Mon Sep 17 00:00:00 2001
From: Thomas Mangin <thomas.mangin@exa.net.uk>
Date: Wed, 15 Apr 2020 12:54:37 +0100
Subject: tunnel: T31: check that the assigned VRF exists

---
 src/conf_mode/interfaces-tunnel.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/conf_mode/interfaces-tunnel.py b/src/conf_mode/interfaces-tunnel.py
index c51048aeb..06c2ea29b 100755
--- a/src/conf_mode/interfaces-tunnel.py
+++ b/src/conf_mode/interfaces-tunnel.py
@@ -19,6 +19,7 @@ import netifaces
 
 from sys import exit
 from copy import deepcopy
+from netifaces import interfaces
 
 from vyos.config import Config
 from vyos.ifconfig import Interface, GREIf, GRETapIf, IPIPIf, IP6GREIf, IPIP6If, IP6IP6If, SitIf, Sit6RDIf
@@ -506,6 +507,12 @@ def verify(conf):
     if ipv6_count and not IP6 in kls.ip:
         print(f'Should not use IPv6 addresses on tunnel {iftype} {ifname}')
 
+    # vrf check
+
+    vrf = options['vrf']
+    if vrf and vrf not in interfaces():
+        raise ConfigError(f'VRF "{vrf}" does not exist')
+
     # tunnel encapsulation check
 
     convert = {
-- 
cgit v1.2.3