all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH V2 pve-container 0/1] add disable bridge learning feature
@ 2022-03-21  6:26 Alexandre Derumier
  2022-03-21  6:26 ` [pve-devel] [PATCH V2 pve-container 1/1] net : add support for bridge disable mac learning Alexandre Derumier
  0 siblings, 1 reply; 2+ messages in thread
From: Alexandre Derumier @ 2022-03-21  6:26 UTC (permalink / raw)
  To: pve-devel

Allow to disable bridge learning

changelog v2: 
- rebase with $opts->{learning}

Alexandre Derumier (1):
  net : add support for bridge disable mac learning

 src/PVE/LXC.pm  | 16 ++++++++++++++--
 src/lxcnetaddbr |  7 ++++++-
 2 files changed, 20 insertions(+), 3 deletions(-)

-- 
2.30.2




^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pve-devel] [PATCH V2 pve-container 1/1] net : add support for bridge disable mac learning
  2022-03-21  6:26 [pve-devel] [PATCH V2 pve-container 0/1] add disable bridge learning feature Alexandre Derumier
@ 2022-03-21  6:26 ` Alexandre Derumier
  0 siblings, 0 replies; 2+ messages in thread
From: Alexandre Derumier @ 2022-03-21  6:26 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 src/PVE/LXC.pm  | 16 ++++++++++++++--
 src/lxcnetaddbr |  7 ++++++-
 2 files changed, 20 insertions(+), 3 deletions(-)

diff --git a/src/PVE/LXC.pm b/src/PVE/LXC.pm
index b07d986..c0f7c5e 100644
--- a/src/PVE/LXC.pm
+++ b/src/PVE/LXC.pm
@@ -949,8 +949,14 @@ sub update_net {
 
 		if ($have_sdn) {
 		    PVE::Network::SDN::Zones::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+		    PVE::Network::SDN::Zones::add_bridge_fdb($veth, $newnet->{hwaddr}, $newnet->{bridge}, $newnet->{firewall});
 		} else {
-		    PVE::Network::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+		    my $interfaces_config = PVE::INotify::read_file('interfaces');
+		    my $bridge = $newnet->{bridge};
+		    my $opts = {};
+		    $opts->{learning} = 0 if $interfaces_config->{ifaces}->{$bridge} && $interfaces_config->{ifaces}->{$bridge}->{'bridge-disable-mac-learning'};
+		    PVE::Network::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate}, $opts);
+		    PVE::Network::add_bridge_fdb($veth, $newnet->{hwaddr}, $newnet->{firewall}) if defined($opts->{learning}) && !$opts->{learning};
 		}
 
 		# This includes the rate:
@@ -983,9 +989,15 @@ sub hotplug_net {
     if ($have_sdn) {
 	PVE::Network::SDN::Zones::veth_create($veth, $vethpeer, $newnet->{bridge}, $newnet->{hwaddr});
 	PVE::Network::SDN::Zones::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+	PVE::Network::SDN::Zones::add_bridge_fdb($veth, $newnet->{hwaddr}, $newnet->{bridge}, $newnet->{firewall});
     } else {
+	my $interfaces_config = PVE::INotify::read_file('interfaces');
+	my $bridge = $newnet->{bridge};
+	my $opts = {};
+	$opts->{learning} = 0 if $interfaces_config->{ifaces}->{$bridge} && $interfaces_config->{ifaces}->{$bridge}->{'bridge-disable-mac-learning'};
 	PVE::Network::veth_create($veth, $vethpeer, $newnet->{bridge}, $newnet->{hwaddr});
-	PVE::Network::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate});
+	PVE::Network::tap_plug($veth, $newnet->{bridge}, $newnet->{tag}, $newnet->{firewall}, $newnet->{trunks}, $newnet->{rate}, $opts);
+	PVE::Network::add_bridge_fdb($veth, $newnet->{hwaddr}, $newnet->{firewall}) if defined($opts->{learning}) && !$opts->{learning};
     }
 
     # attach peer in container
diff --git a/src/lxcnetaddbr b/src/lxcnetaddbr
index 8bd9d22..1d72ac2 100755
--- a/src/lxcnetaddbr
+++ b/src/lxcnetaddbr
@@ -63,8 +63,13 @@ if (-d "/sys/class/net/$iface") {
 
     if ($have_sdn) {
 	PVE::Network::SDN::Zones::tap_plug($iface, $net->{bridge}, $tag, $firewall, $trunks, $rate);
+	PVE::Network::SDN::Zones::add_bridge_fdb($iface, $net->{hwaddr}, $net->{bridge}, $net->{firewall});
     } else {
-	PVE::Network::tap_plug($iface, $bridge, $tag, $firewall, $trunks, $rate);
+	my $interfaces_config = PVE::INotify::read_file('interfaces');
+	my $opts = {};
+	$opts->{learning} = 0 if $interfaces_config->{ifaces}->{$bridge} && $interfaces_config->{ifaces}->{$bridge}->{'bridge-disable-mac-learning'};
+	PVE::Network::tap_plug($iface, $bridge, $tag, $firewall, $trunks, $rate, $opts);
+	PVE::Network::add_bridge_fdb($iface, $net->{hwaddr}, $net->{firewall}) if defined($opts->{learning}) && !$opts->{learning};
     }
 }
 
-- 
2.30.2




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-03-21  6:26 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-21  6:26 [pve-devel] [PATCH V2 pve-container 0/1] add disable bridge learning feature Alexandre Derumier
2022-03-21  6:26 ` [pve-devel] [PATCH V2 pve-container 1/1] net : add support for bridge disable mac learning Alexandre Derumier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal