diff options
| author | Christian Breunig <christian@breunig.cc> | 2024-05-10 15:17:22 +0200 | 
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2024-05-10 15:18:08 +0200 | 
| commit | 314901e7b45782fb6266b35b0e788ab7ea1404b8 (patch) | |
| tree | 3fc2edd5532beaf1f01cd932c0c2d6829ceadb66 | |
| parent | d8ddd7191d3004e886fa45a2cf9bd8dd5e7f5e14 (diff) | |
| download | vyos-1x-314901e7b45782fb6266b35b0e788ab7ea1404b8.tar.gz vyos-1x-314901e7b45782fb6266b35b0e788ab7ea1404b8.zip | |
bond: T6303: must reset system-mac to 00:00:00:00:00:00 on deletion
| -rw-r--r-- | python/vyos/ifconfig/bond.py | 19 | ||||
| -rwxr-xr-x | smoketest/scripts/cli/test_interfaces_bonding.py | 16 | 
2 files changed, 25 insertions, 10 deletions
| diff --git a/python/vyos/ifconfig/bond.py b/python/vyos/ifconfig/bond.py index f26426915..b8ea90049 100644 --- a/python/vyos/ifconfig/bond.py +++ b/python/vyos/ifconfig/bond.py @@ -449,18 +449,13 @@ class BondIf(Interface):                      Interface(interface).set_admin_state('up')              # Bonding policy/mode - default value, always present -            mode = config.get('mode') -            self.set_mode(mode) +            self.set_mode(config['mode'])              # LACPDU transmission rate - default value -            if mode == '802.3ad': +            if config['mode'] == '802.3ad':                  self.set_lacp_rate(config.get('lacp_rate')) -            # Add system mac address for 802.3ad -            if mode == '802.3ad' and 'system_mac' in config: -                self.set_system_mac(config.get('system_mac')) - -            if mode not in ['802.3ad', 'balance-tlb', 'balance-alb']: +            if config['mode'] not in ['802.3ad', 'balance-tlb', 'balance-alb']:                  tmp = dict_search('arp_monitor.interval', config)                  value = tmp if (tmp != None) else '0'                  self.set_arp_interval(value) @@ -495,6 +490,14 @@ class BondIf(Interface):                  Interface(interface).flush_addrs()                  self.add_port(interface) +        # Add system mac address for 802.3ad - default address is all zero +        # mode is always present (defaultValue) +        if config['mode'] == '802.3ad': +            mac = '00:00:00:00:00:00' +            if 'system_mac' in config: +                mac = config['system_mac'] +            self.set_system_mac(mac) +          # Primary device interface - must be set after 'mode'          value = config.get('primary')          if value: self.set_primary(value) diff --git a/smoketest/scripts/cli/test_interfaces_bonding.py b/smoketest/scripts/cli/test_interfaces_bonding.py index 091a7a3c5..f436424b8 100755 --- a/smoketest/scripts/cli/test_interfaces_bonding.py +++ b/smoketest/scripts/cli/test_interfaces_bonding.py @@ -243,7 +243,9 @@ class BondingInterfaceTest(BasicInterfaceTest.TestCase):      def test_bonding_system_mac(self):          # configure member interfaces and system-mac +        default_system_mac = '00:00:00:00:00:00' # default MAC is all zeroes          system_mac = '00:50:ab:cd:ef:11' +          for interface in self._interfaces:              for option in self._options.get(interface, []):                  self.cli_set(self._base_path + [interface] + option.split()) @@ -254,8 +256,18 @@ class BondingInterfaceTest(BasicInterfaceTest.TestCase):          # verify config          for interface in self._interfaces: -            defined_mac = read_file(f'/sys/class/net/{interface}/bonding/ad_actor_system') -            self.assertIn(defined_mac, system_mac) +            tmp = read_file(f'/sys/class/net/{interface}/bonding/ad_actor_system') +            self.assertIn(tmp, system_mac) + +        for interface in self._interfaces: +            self.cli_delete(self._base_path + [interface, 'system-mac']) + +        self.cli_commit() + +        # verify default value +        for interface in self._interfaces: +            tmp = read_file(f'/sys/class/net/{interface}/bonding/ad_actor_system') +            self.assertIn(tmp, default_system_mac)      def test_bonding_evpn_multihoming(self):          id = '5' | 
