From 8be5a47c6e5a7037b7424b1be8ba345c59f53c78 Mon Sep 17 00:00:00 2001
From: Christian Breunig <christian@breunig.cc>
Date: Thu, 18 Jan 2024 17:11:23 +0100
Subject: ethernet: T4638: deleting parent interface does not delete underlying
 VIFs

(cherry picked from commit 7ba47f027f3a9441125c13a927eb23cee2de041b)
---
 python/vyos/ifconfig/ethernet.py | 5 +++++
 1 file changed, 5 insertions(+)

(limited to 'python')

diff --git a/python/vyos/ifconfig/ethernet.py b/python/vyos/ifconfig/ethernet.py
index aaf903acd..dde87149d 100644
--- a/python/vyos/ifconfig/ethernet.py
+++ b/python/vyos/ifconfig/ethernet.py
@@ -19,6 +19,7 @@ from glob import glob
 
 from vyos.base import Warning
 from vyos.ethtool import Ethtool
+from vyos.ifconfig import Section
 from vyos.ifconfig.interface import Interface
 from vyos.utils.dict import dict_search
 from vyos.utils.file import read_file
@@ -128,6 +129,10 @@ class EthernetIf(Interface):
             # will remain visible for the operating system.
             self.set_admin_state('down')
 
+        # Remove all VLAN subinterfaces - filter with the VLAN dot
+        for vlan in [x for x in Section.interfaces(self.iftype) if x.startswith(f'{self.ifname}.')]:
+            Interface(vlan).remove()
+
         super().remove()
 
     def set_flow_control(self, enable):
-- 
cgit v1.2.3