diff options
-rw-r--r-- | python/vyos/ifconfig.py | 24 |
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): """ |