From 5c5716a84abac766ad72334e3f159fffb9644c8f Mon Sep 17 00:00:00 2001 From: Nataliia Solomko Date: Mon, 6 Jul 2026 18:07:00 +0300 Subject: vpp: T9018: Auto-enable promiscuous mode for interfaces with VLANs VPP drops VLAN-tagged frames unless the parent interface has promiscuous mode enabled, causing VLAN sub-interfaces to lose connectivity. Automatically enable promiscuous mode on VPP interfaces that have VLAN sub-interfaces (vif/vif-s) configured. --- src/conf_mode/interfaces_ethernet.py | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'src') diff --git a/src/conf_mode/interfaces_ethernet.py b/src/conf_mode/interfaces_ethernet.py index 1368f2c6e..6990efdfe 100755 --- a/src/conf_mode/interfaces_ethernet.py +++ b/src/conf_mode/interfaces_ethernet.py @@ -48,6 +48,7 @@ from vyos.utils.dict import dict_set from vyos.utils.dict import dict_delete from vyos.utils.network import get_vrf_tableid from vyos.utils.process import is_systemd_service_running +from vyos.vpp.config_deps import deps_bond_dict from vyos.vpp.config_verify import verify_vpp_remove_interface from vyos.vpp.control_vpp import VPPControl from vyos import ConfigError @@ -192,6 +193,7 @@ def get_config(config=None): get_first_key=True, no_tag_node_value_mangle=True, ) + ethernet['vpp_bond_members'] = deps_bond_dict(conf) # Protocols static arp dependency if 'static_arp' in ethernet: @@ -482,6 +484,15 @@ def apply(ethernet): sync_vpp_lcp_vrf_tables(ethernet, vpp_api) + # VPP requires promiscuous mode to pass VLAN-tagged traffic; + # also keep it enabled for VPP bond members + needs_promisc = ( + 'vif' in ethernet + or 'vif_s' in ethernet + or ifname in ethernet.get('vpp_bond_members') + ) + vpp_api.set_promisc(ifname, enable=needs_promisc) + return None -- cgit v1.2.3