summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-02-01 18:48:26 +0100
committerChristian Poessinger <christian@poessinger.com>2020-02-01 18:51:19 +0100
commit95f7a440031c58b47fd88d6aa9fac3ddaf6ae231 (patch)
treefef221c08e569989d80875d7008cbbca375954fb
parent97de067b7c6b8eb3368274237883666f5ad4501e (diff)
downloadvyos-1x-95f7a440031c58b47fd88d6aa9fac3ddaf6ae231.tar.gz
vyos-1x-95f7a440031c58b47fd88d6aa9fac3ddaf6ae231.zip
ifconfig: T2002: T2009: bugfix for always disabled Ethernet/Bond interfaces
Commit 4a4e2b6 ("ifconfig: T2002: only admin up interfaces if parent interface is up") contained an inheritance issue where the Ethernet and Bond interface was always admin down. This was caused by wrong calls in the inheritance structure.
-rw-r--r--python/vyos/ifconfig.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/python/vyos/ifconfig.py b/python/vyos/ifconfig.py
index 12ab4548d..5d528df36 100644
--- a/python/vyos/ifconfig.py
+++ b/python/vyos/ifconfig.py
@@ -1067,9 +1067,11 @@ class VLANIf(Interface):
It makes only sense to change the state of an individual VLAN if the
parent interface is up
"""
- parent_state = self.get_state()
+ parent_state = Interface(self._ifname).get_state()
if parent_state == 'up':
super().set_state(state)
+ else:
+ self._debug_msg('Parent interface down -> VLAN interface down')
def add_vlan(self, vlan_id, ethertype='', ingress_qos='', egress_qos=''):
"""
@@ -1146,6 +1148,17 @@ class EthernetIf(VLANIf):
def __init__(self, ifname):
super().__init__(ifname)
+ def set_state(self, state):
+ """
+ Enable (up) / Disable (down) an interface
+ """
+
+ # As we inherit from VLANIf we need to call the Interface.set_state()
+ # method directly as otherwise the interface will be dead-locked and
+ # always stay down.
+ Interface.set_state(self, state)
+
+
def get_driver_name(self):
"""
Return the driver name used by NIC. Some NICs don't support all
@@ -1378,6 +1391,15 @@ class BondIf(VLANIf):
i = Interface(slave['ifname'])
i.set_state(slave['state'])
+ def set_state(self, state):
+ """
+ Enable (up) / Disable (down) an interface
+ """
+
+ # As we inherit from VLANIf we need to call the Interface.set_state()
+ # method directly as otherwise the interface will be dead-locked and
+ # always stay down.
+ Interface.set_state(self, state)
def set_hash_policy(self, mode):
"""