migration: improve ipv6 case

Qemu parses hostnames in brackets correctly but sets an ipv6
flag for them as if they were ipv6 addresses, only insert
brackets for ipv6 addresses.
This commit is contained in:
Wolfgang Bumiller 2015-11-05 14:09:16 +01:00 committed by Dietmar Maurer
parent 568c18b434
commit 407e0b8bef
2 changed files with 5 additions and 4 deletions

View File

@ -334,7 +334,7 @@ sub phase2 {
PVE::Tools::run_command($cmd, input => $spice_ticket, outfunc => sub {
my $line = shift;
if ($line =~ m/^migration listens on tcp:\[([\d\.:a-fA-F]+|localhost)\]:(\d+)$/) {
if ($line =~ m/^migration listens on tcp:(localhost|[\d\.]+|\[[\d\.:a-fA-F]+\]):(\d+)$/) {
$raddr = $1;
$rport = int($2);
}
@ -418,10 +418,10 @@ sub phase2 {
}
eval {
PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate", uri => "tcp:[$raddr]:$rport");
PVE::QemuServer::vm_mon_cmd_nocheck($vmid, "migrate", uri => "tcp:$raddr:$rport");
};
my $merr = $@;
$self->log('info', "migrate uri => tcp:[$raddr]:$rport failed: $merr") if $merr;
$self->log('info', "migrate uri => tcp:$raddr:$rport failed: $merr") if $merr;
my $lstat = 0;
my $usleep = 2000000;

View File

@ -4330,10 +4330,11 @@ sub vm_start {
my $nodename = PVE::INotify::nodename();
if ($datacenterconf->{migration_unsecure}) {
$localip = PVE::Cluster::remote_node_ip($nodename, 1);
$localip = "[$localip]" if Net::IP::ip_is_ipv6($localip);
}
my $pfamily = PVE::Tools::get_host_address_family($nodename);
$migrate_port = PVE::Tools::next_migrate_port($pfamily);
$migrate_uri = "tcp:[${localip}]:${migrate_port}";
$migrate_uri = "tcp:${localip}:${migrate_port}";
push @$cmd, '-incoming', $migrate_uri;
push @$cmd, '-S';
} else {