diff options
author | Christian Breunig <christian@breunig.cc> | 2023-11-06 17:41:25 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-11-06 17:41:25 +0100 |
commit | f6a3472341716ceaea07bec65df79ad2b792313f (patch) | |
tree | 043a4de046a225c8d5f9120b34dbef114f96e2c2 /src | |
parent | 8e2429ebddfcc612b4d232ac81634e2bc9d1da5a (diff) | |
parent | fdf7f3a05edbaaf8aeca7e24a9980d5af67dca18 (diff) | |
download | vyos-1x-f6a3472341716ceaea07bec65df79ad2b792313f.tar.gz vyos-1x-f6a3472341716ceaea07bec65df79ad2b792313f.zip |
Merge pull request #2439 from c-po/t3700-vxlan-svd-fixup
vxlan: T3700: add bridge dependency call when altering member interfaces
Diffstat (limited to 'src')
-rwxr-xr-x | src/conf_mode/interfaces-bridge.py | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/src/conf_mode/interfaces-bridge.py b/src/conf_mode/interfaces-bridge.py index c82f01e53..31508a3c5 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-2020 VyOS maintainers and contributors +# Copyright (C) 2019-2023 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 @@ -28,7 +28,8 @@ from vyos.configverify import verify_vrf from vyos.ifconfig import BridgeIf from vyos.configdict import has_address_configured 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 import ConfigError @@ -83,6 +84,12 @@ def get_config(config=None): if 'enable_vlan' in bridge and tmp: 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'): + set_dependents('vxlan', conf, interface) + # delete empty dictionary keys - no need to run code paths if nothing is there to do if 'member' in bridge: if 'interface' in bridge['member'] and len(bridge['member']['interface']) == 0: @@ -159,6 +166,13 @@ def apply(bridge): else: br.update(bridge) + for interface in dict_search('member.interface', bridge) or []: + if interface.startswith('vxlan'): + try: + call_dependents() + except ConfigError: + raise ConfigError('Error in updating VXLAN interface after changing bridge!') + return None if __name__ == '__main__': |