at the end of a live migration, we need to remove old mac entries on source host (vm is not yet stopped), before resume vm on target host
Signed-off-by: Alexandre Derumier <aderum...@odiso.com> --- PVE/QemuMigrate.pm | 1 + PVE/QemuServer.pm | 20 ++++++++++++++++++++ test/MigrationTest/QemuMigrateMock.pm | 3 +++ 3 files changed, 24 insertions(+) diff --git a/PVE/QemuMigrate.pm b/PVE/QemuMigrate.pm index 104e62c..c96474e 100644 --- a/PVE/QemuMigrate.pm +++ b/PVE/QemuMigrate.pm @@ -1130,6 +1130,7 @@ sub phase3_cleanup { # transfer replication state before move config $self->transfer_replication_state() if $self->{is_replicated}; + PVE::QemuServer::del_nets_bridge_fdb($conf, $vmid); PVE::QemuConfig->move_config_to_node($vmid, $self->{node}); $self->switch_replication_job_target() if $self->{is_replicated}; diff --git a/PVE/QemuServer.pm b/PVE/QemuServer.pm index 8803f54..aa10de7 100644 --- a/PVE/QemuServer.pm +++ b/PVE/QemuServer.pm @@ -8145,4 +8145,24 @@ sub add_nets_bridge_fdb { } } } + +sub del_nets_bridge_fdb { + my ($conf, $vmid) = @_; + + foreach my $opt (keys %$conf) { + if ($opt =~ m/^net(\d+)$/) { + my $net = parse_net($conf->{$opt}); + next if !$net; + next if !$net->{macaddr}; + + my $iface = "tap${vmid}i$1"; + if ($have_sdn) { + PVE::Network::SDN::Zones::del_bridge_fdb($iface, $net->{macaddr}, $net->{bridge}, $net->{firewall}); + } else { + PVE::Network::del_bridge_fdb($iface, $net->{macaddr}, $net->{firewall}); + } + } + } +} + 1; diff --git a/test/MigrationTest/QemuMigrateMock.pm b/test/MigrationTest/QemuMigrateMock.pm index f2c0281..f00b974 100644 --- a/test/MigrationTest/QemuMigrateMock.pm +++ b/test/MigrationTest/QemuMigrateMock.pm @@ -158,6 +158,9 @@ $MigrationTest::Shared::qemu_server_module->mock( $vm_stop_executed = 1; delete $expected_calls->{'vm_stop'}; }, + del_nets_bridge_fdb => sub { + return; + }, ); my $qemu_server_cpuconfig_module = Test::MockModule->new("PVE::QemuServer::CPUConfig"); -- 2.30.2 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel