From ac7ee2b36df23c3a4dd2be393132631556b6ef40 Mon Sep 17 00:00:00 2001
From: Andrew Topp <andrewt@telekinetica.net>
Date: Sat, 1 Jun 2024 23:42:57 +1000
Subject: vxlan: T6401: Avoid calling get_vxlan_vni_filter() unless we need it

`bridge vni show dev vxlanX` will exit with an error if no VNI filters
are installed, but the getter is used even when we haven't installed any.

This fix avoids fetching a list of VNI filters unless we know we've
created some.
---
 python/vyos/ifconfig/vxlan.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/python/vyos/ifconfig/vxlan.py b/python/vyos/ifconfig/vxlan.py
index bdb48e303..918aea202 100644
--- a/python/vyos/ifconfig/vxlan.py
+++ b/python/vyos/ifconfig/vxlan.py
@@ -138,10 +138,13 @@ class VXLANIf(Interface):
             raise ValueError('Value out of range')
 
         if 'vlan_to_vni_removed' in self.config:
-            cur_vni_filter = get_vxlan_vni_filter(self.ifname)
+            cur_vni_filter = None
+            if dict_search('parameters.vni_filter', self.config) != None:
+                cur_vni_filter = get_vxlan_vni_filter(self.ifname)
+
             for vlan, vlan_config in self.config['vlan_to_vni_removed'].items():
                 # If VNI filtering is enabled, remove matching VNI filter
-                if dict_search('parameters.vni_filter', self.config) != None:
+                if cur_vni_filter != None:
                     vni = vlan_config['vni']
                     if vni in cur_vni_filter:
                         self._cmd(f'bridge vni delete dev {self.ifname} vni {vni}')
-- 
cgit v1.2.3