diff options
author | Christian Breunig <christian@breunig.cc> | 2024-02-17 21:19:11 +0100 |
---|---|---|
committer | Mergify <37929162+mergify[bot]@users.noreply.github.com> | 2024-02-18 06:51:50 +0000 |
commit | 18d902ef3fd1aa6e0ad196eebed9b9e5c70fba07 (patch) | |
tree | 91b9b5eba2a6444b3fe2f4cbd33588429197620b /src | |
parent | 3230d09c292c89eddd34e33fda9570042e92e1fd (diff) | |
download | vyos-1x-18d902ef3fd1aa6e0ad196eebed9b9e5c70fba07.tar.gz vyos-1x-18d902ef3fd1aa6e0ad196eebed9b9e5c70fba07.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).
(cherry picked from commit dbe8c613bb80bc8b714398825054ade5942ea75b)
Diffstat (limited to 'src')
-rwxr-xr-x | src/conf_mode/interfaces_bridge.py | 12 |
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: |