summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2024-02-17 21:19:11 +0100
committerChristian Breunig <christian@breunig.cc>2024-02-17 21:29:02 +0100
commitdbe8c613bb80bc8b714398825054ade5942ea75b (patch)
tree32701eb012b42866a248e7141e4e8bd6b3481ee8 /src
parentab5f98bd469ce7aadf8483b968b9f9f9e82a9812 (diff)
downloadvyos-1x-dbe8c613bb80bc8b714398825054ade5942ea75b.tar.gz
vyos-1x-dbe8c613bb80bc8b714398825054ade5942ea75b.zip
bridge: T6043: do not call vxlan dependency if interface does not exist (yet)
In order to keep the proper priority list during system startup and on initial setup/commit for this feature the dependent VXLAN code should not be called, if the interface in question does not exist (yet).
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/interfaces_bridge.py12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/conf_mode/interfaces_bridge.py b/src/conf_mode/interfaces_bridge.py
index 29991e2da..9789f7bd3 100755
--- a/src/conf_mode/interfaces_bridge.py
+++ b/src/conf_mode/interfaces_bridge.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
#
-# Copyright (C) 2019-2023 VyOS maintainers and contributors
+# Copyright (C) 2019-2024 VyOS maintainers and contributors
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 2 or later as
@@ -31,6 +31,7 @@ from vyos.configdict import has_vrf_configured
from vyos.configdep import set_dependents
from vyos.configdep import call_dependents
from vyos.utils.dict import dict_search
+from vyos.utils.network import interface_exists
from vyos import ConfigError
from vyos import airbag
@@ -85,9 +86,10 @@ def get_config(config=None):
bridge['member']['interface'][interface].update({'has_vlan' : ''})
# When using VXLAN member interfaces that are configured for Single
- # VXLAN Device (SVD) we need to call the VXLAN conf-mode script to re-create
- # VLAN to VNI mappings if required
- if interface.startswith('vxlan'):
+ # VXLAN Device (SVD) we need to call the VXLAN conf-mode script to
+ # re-create VLAN to VNI mappings if required, but only if the interface
+ # is already live on the system - this must not be done on first commit
+ if interface.startswith('vxlan') and interface_exists(interface):
set_dependents('vxlan', conf, interface)
# delete empty dictionary keys - no need to run code paths if nothing is there to do
@@ -167,7 +169,7 @@ def apply(bridge):
br.update(bridge)
for interface in dict_search('member.interface', bridge) or []:
- if interface.startswith('vxlan'):
+ if interface.startswith('vxlan') and interface_exists(interface):
try:
call_dependents()
except ConfigError: