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):          """  | 
