From 75dea8b906d4a5c30d6bce269f38360f35b08a84 Mon Sep 17 00:00:00 2001 From: Julien Fortin Date: Wed, 3 May 2023 16:40:09 +0200 Subject: [PATCH] addons: bond: set protodown off on bond slave before bond is deleted Signed-off-by: Julien Fortin --- ifupdown2/addons/bond.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ifupdown2/addons/bond.py b/ifupdown2/addons/bond.py index 24f0103..57f3c79 100644 --- a/ifupdown2/addons/bond.py +++ b/ifupdown2/addons/bond.py @@ -10,6 +10,7 @@ import re import os from collections import OrderedDict +from contextlib import suppress try: from ifupdown2.nlmanager.ipnetwork import IPv4Address @@ -928,11 +929,22 @@ class bond(Addon, moduleBase): self.log_error(str(e), ifaceobj) def _down(self, ifaceobj, ifaceobj_getfunc=None): + bond_slaves = self.cache.get_slaves(ifaceobj.name) + try: self.netlink.link_del(ifaceobj.name) except Exception as e: self.log_warn('%s: %s' % (ifaceobj.name, str(e))) + # set protodown (and reason) off bond slaves + for slave in bond_slaves: + with suppress(Exception): + self.iproute2.link_set_protodown_reason_clag_off(slave) + with suppress(Exception): + self.iproute2.link_set_protodown_reason_frr_off(slave) + with suppress(Exception): + self.netlink.link_set_protodown_off(slave) + def _query_check_bond_slaves(self, ifaceobjcurr, attr, user_bond_slaves, running_bond_slaves): query = 1