diff options
| author | Nataliia Solomko <natalirs1985@gmail.com> | 2026-04-20 14:19:44 +0300 |
|---|---|---|
| committer | Nataliia Solomko <natalirs1985@gmail.com> | 2026-04-21 11:41:33 +0300 |
| commit | b5b5c421baae71b586c84aedb8f119daf18964ee (patch) | |
| tree | 88afd9d42bfc750635e3c7900708a138f940f206 | |
| parent | 67b68bd9893ad3a39af53ceee856ce5c61ed0638 (diff) | |
| download | vyos-1x-b5b5c421baae71b586c84aedb8f119daf18964ee.tar.gz vyos-1x-b5b5c421baae71b586c84aedb8f119daf18964ee.zip | |
bridge: T8411: Allow disabling MAC learning on bridge member interfaces
| -rw-r--r-- | interface-definitions/interfaces_bridge.xml.in | 6 | ||||
| -rw-r--r-- | python/vyos/ifconfig/bridge.py | 5 | ||||
| -rw-r--r-- | python/vyos/ifconfig/interface.py | 17 |
3 files changed, 28 insertions, 0 deletions
diff --git a/interface-definitions/interfaces_bridge.xml.in b/interface-definitions/interfaces_bridge.xml.in index 6fbe8ec2c..d4ee2a652 100644 --- a/interface-definitions/interfaces_bridge.xml.in +++ b/interface-definitions/interfaces_bridge.xml.in @@ -213,6 +213,12 @@ <valueless/> </properties> </leafNode> + <leafNode name="disable-learning"> + <properties> + <help>Disable MAC address learning</help> + <valueless/> + </properties> + </leafNode> </children> </tagNode> </children> 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 |
