summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorChristian Breunig <christian@breunig.cc>2026-03-30 21:29:26 +0200
committerGitHub <noreply@github.com>2026-03-30 21:29:26 +0200
commit03b412fd9ca754f3ea61c8c7c210babf4aa4d251 (patch)
tree85f96d1c79a924c5142dbe98c0de7eb235d318c9 /python
parent7a0b2775278338902631ea8bfe51170d5119a876 (diff)
parent2f0ef2bfe9d36228795ae46eee23031a37ab5957 (diff)
downloadvyos-1x-03b412fd9ca754f3ea61c8c7c210babf4aa4d251.tar.gz
vyos-1x-03b412fd9ca754f3ea61c8c7c210babf4aa4d251.zip
Merge pull request #5086 from natali-rs1985/T8419
vpp: T8419: Disallow cross-membership between VPP and kernel bonding/bridge interfaces
Diffstat (limited to 'python')
-rw-r--r--python/vyos/vpp/utils.py20
1 files changed, 16 insertions, 4 deletions
diff --git a/python/vyos/vpp/utils.py b/python/vyos/vpp/utils.py
index 88b641e66..10940b5a4 100644
--- a/python/vyos/vpp/utils.py
+++ b/python/vyos/vpp/utils.py
@@ -112,11 +112,14 @@ def cli_ifaces_list(config_instance, mode: str = 'candidate') -> list[str]:
return vpp_ifaces
-def cli_ethernet_with_vifs_ifaces(config_instance) -> list[str]:
+def cli_ethernet_with_vifs_ifaces(
+ config_instance, include_nested_vifs=False
+) -> list[str]:
"""List of all VPP Ethernet interfaces with VIFs
Args:
config_instance (VyOS Config): VyOS Config instance
+ include_nested_vifs (bool): Include Q-in-Q/customer VIFs if True
Returns:
list[str]: list of interfaces
@@ -135,17 +138,26 @@ def cli_ethernet_with_vifs_ifaces(config_instance) -> list[str]:
ifaces: list[str] = []
# Get a list of Ethernet interfaces
- for iface in config.get('settings', {}).get('interface', {}).keys():
- ifaces.append(iface)
+ parent_ifaces = list(config.get('settings', {}).get('interface', {}).keys())
# Add Ethernet interfaces with VIFs
- for iface in ifaces:
+ for iface in parent_ifaces:
+ ifaces.append(iface)
_, iface_config = get_interface_dict(
config_instance, ['interfaces', 'ethernet'], ifname=iface
)
ifaces.extend([f'{iface}.{vif}' for vif in iface_config.get('vif', {})])
ifaces.extend([f'{iface}.{vif_s}' for vif_s in iface_config.get('vif_s', {})])
+ if include_nested_vifs:
+ for vif_s, vif_s_config in iface_config.get('vif_s', {}).items():
+ ifaces.extend(
+ [
+ f'{iface}.{vif_s}.{vif_c}'
+ for vif_c in vif_s_config.get('vif_c', {})
+ ]
+ )
+
return ifaces