diff --git a/addons/ifenslave.py b/addons/ifenslave.py index 671d725..35f76f2 100644 --- a/addons/ifenslave.py +++ b/addons/ifenslave.py @@ -94,6 +94,11 @@ class ifenslave(moduleBase): 'bond-lacp-bypass-priority': {'help' : 'slave priority for lacp bypass', 'example' : ['bond-lacp-bypass-priority swp1=1 swp2=1 swp3=2']}, + 'bond-lacp-bypass-use-priority': + {'help' : 'enable priority based selection for lacp bypass', + 'validvals' : ['0', '1'], + 'default' : '1', + 'example' : ['bond-lacp-bypass-use-priority 1']}, 'bond-slaves' : {'help' : 'bond slaves', 'required' : True, @@ -188,6 +193,7 @@ class ifenslave(moduleBase): ('bond-lacp-fallback-allow', 'lacp_bypass_allow'), ('bond-lacp-fallback-period', 'lacp_bypass_period'), ('bond-lacp-bypass-allow', 'lacp_bypass_allow'), + ('bond-lacp-bypass-use-priority', 'lacp_bypass_use_priority'), ('bond-lacp-bypass-period', 'lacp_bypass_period')]) linkup = self.ipcmd.is_link_up(ifaceobj.name) try: @@ -377,7 +383,9 @@ class ifenslave(moduleBase): 'bond-lacp-bypass-period' : self.ifenslavecmd.get_lacp_fallback_period(bondname), 'bond-lacp-bypass-priority' : - self.ifenslavecmd.get_lacp_fallback_priority(bondname)} + self.ifenslavecmd.get_lacp_fallback_priority(bondname), + 'bond-lacp-bypass-use-priority' : + self.ifenslavecmd.get_lacp_fallback_use_priority(bondname)} slaves = self.ifenslavecmd.get_slaves(bondname) if slaves: bondattrs['bond-slaves'] = slaves diff --git a/ifupdownaddons/ifenslaveutil.py b/ifupdownaddons/ifenslaveutil.py index c7e0d42..5bc83b0 100644 --- a/ifupdownaddons/ifenslaveutil.py +++ b/ifupdownaddons/ifenslaveutil.py @@ -54,7 +54,7 @@ class ifenslaveutil(utilsBase): %(bondname, x))), ['use_carrier', 'miimon', 'min_links', 'num_unsol_na', 'num_grat_arp', 'lacp_bypass_allow', 'lacp_bypass_period', - 'clag_enable']) + 'lacp_bypass_use_priority', 'clag_enable']) except Exception, e: pass @@ -318,6 +318,26 @@ class ifenslaveutil(utilsBase): prio_str = ' '.join(prios) return prio_str + def set_lacp_fallback_use_priority(self, bondname, useprio, prehook=None, posthook=None): + if (self._cache_check([bondname, 'linkinfo', 'lacp_bypass_use_priority'], + lacp_bypass_use_priority)): + return + if prehook: + prehook(bondname) + try: + self.write_file('/sys/class/net/%s' %bondname + + '/bonding/lacp_bypass_use_priority', useprio) + except: + raise + finally: + if posthook: + posthook(bondname) + self._cache_update([bondname, 'linkinfo', + 'lacp_bypass_use_priority'], useprio) + + def get_lacp_fallback_use_priority(self, bondname): + return self._cache_get([bondname, 'linkinfo', 'lacp_bypass_use_priority']) + def get_ad_sys_mac_addr(self, bondname): return self._cache_get([bondname, 'linkinfo', 'ad_sys_mac_addr'])