summaryrefslogtreecommitdiff
path: root/python
diff options
context:
space:
mode:
authorDaniil Baturin <daniil@vyos.io>2026-04-21 12:54:11 +0100
committerGitHub <noreply@github.com>2026-04-21 12:54:11 +0100
commit6cac8010f840ad5b8053cf6155bfb12a6720bf6f (patch)
tree2b5a70be4d51a0a19f14368268403f428c214fe9 /python
parent1d81dd0c6190d9fd36d01014f3b0a2d4bb91a919 (diff)
parentb5b5c421baae71b586c84aedb8f119daf18964ee (diff)
downloadvyos-1x-6cac8010f840ad5b8053cf6155bfb12a6720bf6f.tar.gz
vyos-1x-6cac8010f840ad5b8053cf6155bfb12a6720bf6f.zip
Merge pull request #5138 from natali-rs1985/T8411
bridge: T8411: Allow disabling MAC learning on bridge member interfaces
Diffstat (limited to 'python')
-rw-r--r--python/vyos/ifconfig/bridge.py5
-rw-r--r--python/vyos/ifconfig/interface.py17
2 files changed, 22 insertions, 0 deletions
diff --git a/python/vyos/ifconfig/bridge.py b/python/vyos/ifconfig/bridge.py
index 6b5f49778..5f184f221 100644
--- a/python/vyos/ifconfig/bridge.py
+++ b/python/vyos/ifconfig/bridge.py
@@ -386,6 +386,11 @@ class BridgeIf(Interface):
value = '1' if (tmp != None) else '0'
lower.set_root_guard(value)
+ # set learning
+ disable_learning = dict_search('disable_learning', interface_config)
+ value = '1' if disable_learning is None else '0'
+ lower.set_learning(value)
+
if 'enable_vlan' in config:
add_vlan = []
native_vlan_id = None
diff --git a/python/vyos/ifconfig/interface.py b/python/vyos/ifconfig/interface.py
index febd68f44..136adb289 100644
--- a/python/vyos/ifconfig/interface.py
+++ b/python/vyos/ifconfig/interface.py
@@ -226,6 +226,11 @@ class Interface(Control):
'location': '/sys/class/net/{ifname}/brport/root_block',
'errormsg': '{ifname} is not a bridge port member'
},
+ 'learning': {
+ 'validate': assert_boolean,
+ 'location': '/sys/class/net/{ifname}/brport/learning',
+ 'errormsg': '{ifname} is not a bridge port member'
+ },
'proxy_arp': {
'validate': assert_boolean,
'location': '/proc/sys/net/ipv4/conf/{ifname}/proxy_arp',
@@ -1159,6 +1164,18 @@ class Interface(Control):
"""
self.set_interface('bridge_port_isolation', on_or_off)
+ def set_learning(self, state):
+ """
+ Set MAC address learning state on a bridge port. When disabled,
+ the bridge will not learn source MAC addresses from incoming frames on
+ this port, causing all unknown unicast traffic to be flooded.
+
+ Example:
+ >>> from vyos.ifconfig import Interface
+ >>> Interface('eth0').set_learning(0)
+ """
+ self.set_interface('learning', state)
+
def set_proxy_arp(self, enable):
"""
Set per interface proxy ARP configuration