summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2024-05-10 15:20:39 +0200
committerGitHub <noreply@github.com>2024-05-10 15:20:39 +0200
commitdef74a8fa4e0fb9c7ef95bfb6daff8a4f1a9878f (patch)
tree740a1b0b388723ee09ef6043da3e789aee3fc924 /src
parent8fa1cb497f8f4e16d95c1485897663220d86c18e (diff)
parent314901e7b45782fb6266b35b0e788ab7ea1404b8 (diff)
downloadvyos-1x-def74a8fa4e0fb9c7ef95bfb6daff8a4f1a9878f.tar.gz
vyos-1x-def74a8fa4e0fb9c7ef95bfb6daff8a4f1a9878f.zip
Merge pull request #3410 from fett0/T6303
Bond: T6303: add system mac address on interfaces bond
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/interfaces_bonding.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/conf_mode/interfaces_bonding.py b/src/conf_mode/interfaces_bonding.py
index 371b219c0..5e5d5fba1 100755
--- a/src/conf_mode/interfaces_bonding.py
+++ b/src/conf_mode/interfaces_bonding.py
@@ -33,6 +33,7 @@ from vyos.ifconfig import BondIf
from vyos.ifconfig.ethernet import EthernetIf
from vyos.ifconfig import Section
from vyos.template import render_to_string
+from vyos.utils.assertion import assert_mac
from vyos.utils.dict import dict_search
from vyos.utils.dict import dict_to_paths_values
from vyos.utils.network import interface_exists
@@ -244,6 +245,16 @@ def verify(bond):
raise ConfigError('primary interface only works for mode active-backup, ' \
'transmit-load-balance or adaptive-load-balance')
+ if 'system_mac' in bond:
+ if bond['mode'] != '802.3ad':
+ raise ConfigError('Actor MAC address only available in 802.3ad mode!')
+
+ system_mac = bond['system_mac']
+ try:
+ assert_mac(system_mac, test_all_zero=False)
+ except:
+ raise ConfigError(f'Cannot use a multicast MAC address "{system_mac}" as system-mac!')
+
return None
def generate(bond):