diff options
| author | fett0 <fernando.gmaidana@gmail.com> | 2024-05-04 17:07:26 +0000 | 
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2024-05-10 15:18:08 +0200 | 
| commit | 234f35d8bae71b5d33ad97cdabc236ec6b13c3a2 (patch) | |
| tree | f177d7b6dcc802e7aaaf8a66808a46521b495098 /python | |
| parent | 2159dfdd138412b5d0af89a6c3adfdabf901b65b (diff) | |
| download | vyos-1x-234f35d8bae71b5d33ad97cdabc236ec6b13c3a2.tar.gz vyos-1x-234f35d8bae71b5d33ad97cdabc236ec6b13c3a2.zip | |
bond: T6303: add system mac address on bond
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/ifconfig/bond.py | 27 | 
1 files changed, 27 insertions, 0 deletions
| diff --git a/python/vyos/ifconfig/bond.py b/python/vyos/ifconfig/bond.py index c6d0f1cff..b381ba0e1 100644 --- a/python/vyos/ifconfig/bond.py +++ b/python/vyos/ifconfig/bond.py @@ -18,6 +18,7 @@ import os  from vyos.ifconfig.interface import Interface  from vyos.utils.dict import dict_search  from vyos.utils.assertion import assert_list +from vyos.utils.assertion import assert_mac  from vyos.utils.assertion import assert_positive  @Interface.register @@ -54,6 +55,10 @@ class BondIf(Interface):              'validate': lambda v: assert_list(v, ['slow', 'fast']),              'location': '/sys/class/net/{ifname}/bonding/lacp_rate',          }, +        'bond_system_mac': { +            'validate': assert_mac, +            'location': '/sys/class/net/{ifname}/bonding/ad_actor_system', +        },          'bond_miimon': {              'validate': assert_positive,              'location': '/sys/class/net/{ifname}/bonding/miimon' @@ -385,6 +390,24 @@ class BondIf(Interface):          """          return self.set_interface('bond_mode', mode) +    def set_system_mac(self, mac): +        """ +        In an AD system, this specifies the mac-address for the actor in +	    protocol packet exchanges (LACPDUs). The value cannot be NULL or +	    multicast. It is preferred to have the local-admin bit set for this +	    mac but driver does not enforce it. If the value is not given then +	    system defaults to using the masters' mac address as actors' system +	    address. + +	    This parameter has effect only in 802.3ad mode and is available through +	    SysFs interface. + +        Example: +        >>> from vyos.ifconfig import BondIf +        >>> BondIf('bond0').set_system_mac('00:50:ab:cd:ef:01') +        """ +        return self.set_interface('bond_system_mac', mac) +      def update(self, config):          """ General helper function which works on a dictionary retrived by          get_config_dict(). It's main intention is to consolidate the scattered @@ -433,6 +456,10 @@ class BondIf(Interface):              if 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']:                  tmp = dict_search('arp_monitor.interval', config)                  value = tmp if (tmp != None) else '0' | 
