diff options
| author | Christian Breunig <christian@breunig.cc> | 2026-03-30 21:29:26 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-03-30 21:29:26 +0200 |
| commit | 03b412fd9ca754f3ea61c8c7c210babf4aa4d251 (patch) | |
| tree | 85f96d1c79a924c5142dbe98c0de7eb235d318c9 /python | |
| parent | 7a0b2775278338902631ea8bfe51170d5119a876 (diff) | |
| parent | 2f0ef2bfe9d36228795ae46eee23031a37ab5957 (diff) | |
| download | vyos-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.py | 20 |
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 |
