Signed-off-by: Alexandre Derumier <aderum...@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


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to