summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2026-07-06 18:07:00 +0300
committerNataliia Solomko <natalirs1985@gmail.com>2026-07-07 11:35:18 +0300
commit5c5716a84abac766ad72334e3f159fffb9644c8f (patch)
tree874dccdc9380762fd2f82c4dcc0d7d4b072dcfc9 /src
parentb90c21db2edefb02e22ea9233cf76ed6435f91f6 (diff)
downloadvyos-1x-5c5716a84abac766ad72334e3f159fffb9644c8f.tar.gz
vyos-1x-5c5716a84abac766ad72334e3f159fffb9644c8f.zip
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.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/conf_mode/interfaces_ethernet.py11
1 files changed, 11 insertions, 0 deletions
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