* Package architecture refactoring and cleanups
* Package can be build/install as debian, pip or rpm package
* Makefile to easily perform tasks (i.e.: install, build, test, upload..)
+ * Closes #48: Run up/down on "manual" interfaces, but ignore any errors.
* Closes #58: ifupdown2.conf: vlan_aware_bridge_address_support on/off
* Traditional bridge support for mstpctl attr: (portautoedge, portrestrrole)
* Configuration for IPv6 link-local auto-generate mode, new attributes:
ipv6-addrgen (address addon)
address-virtual-ipv6-addrgen (addressvirtual addon)
-
-- Julien Fortin <julien@cumulusnetworks.com> Fri, 15 Jun 2018 13:05:40 +0200
ifupdown2 (1.1.18) RELEASED; urgency=medium
(ifaceobj.link_privflags & ifaceLinkPrivFlags.VRF_SLAVE)):
self._keep_link_down(ifaceobj)
return
- # if not a logical interface and addr method is manual,
- # ignore link admin state changes
- if (ifaceobj.addr_method == 'manual' and
- not ifaceobj.link_kind):
- return
if self._delay_admin_state:
self._delay_admin_state_iface_queue.append(ifaceobj.name)
return
return
if self._keep_link_down(ifaceobj):
return
- self.link_up(ifaceobj.name)
+ try:
+ self.link_up(ifaceobj.name)
+ except:
+ if ifaceobj.addr_method == 'manual':
+ pass
+ else:
+ raise
def _keep_link_down(self, ifaceobj):
if ifaceobj.link_privflags & ifaceLinkPrivFlags.KEEP_LINK_DOWN:
# there is no real interface behind it
if ifaceobj.type == ifaceType.BRIDGE_VLAN:
return
- # if not a logical interface and addr method is manual,
- # ignore link admin state changes
- if (ifaceobj.addr_method == 'manual' and
- not ifaceobj.link_kind):
- return
if self._delay_admin_state:
self._delay_admin_state_iface_queue.append(ifaceobj.name)
return
return
if not self.link_exists(ifaceobj.name):
return
- self.link_down(ifaceobj.name)
+ try:
+ self.link_down(ifaceobj.name)
+ except:
+ if ifaceobj.addr_method == 'manual':
+ pass
+ else:
+ raise
# ifupdown object interface operation handlers
ops_handlers = OrderedDict([('up', run_up),
ifaceobj.role = role
def _set_iface_role_n_kind(self, ifaceobj, upperifaceobj):
-
- # If addr_method is set and link is not a logical interface,
- # set flag KEEP_LINK_DOWN. addr_method == 'manual' only applies to
- # logical interfaces.
- if (ifaceobj.addr_method == 'manual' and not ifaceobj.link_kind):
- ifaceobj.link_privflags |= ifaceLinkPrivFlags.KEEP_LINK_DOWN
-
if (upperifaceobj.link_kind & ifaceLinkKind.BOND):
self._set_iface_role(ifaceobj, ifaceRole.SLAVE, upperifaceobj)
ifaceobj.link_privflags |= ifaceLinkPrivFlags.BOND_SLAVE