summaryrefslogtreecommitdiff
path: root/python/vyos/ifconfig.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/vyos/ifconfig.py')
-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):
"""