]> git.proxmox.com Git - qemu-server.git/commitdiff
pass datacenter.cfg's mac_prefix to random_ether_addr
authorWolfgang Bumiller <w.bumiller@proxmox.com>
Wed, 13 Jul 2016 14:25:44 +0000 (16:25 +0200)
committerFabian Grünbichler <f.gruenbichler@proxmox.com>
Thu, 14 Jul 2016 07:02:24 +0000 (09:02 +0200)
PVE/API2/Qemu.pm
PVE/QemuServer.pm

index 733788797b4f0ebf4f14b6b9b338ef4289dc3dcb..df0518dcb4c8a129cda246a6eef9a058d3b2ee6e 100644 (file)
@@ -2311,7 +2311,8 @@ __PACKAGE__->register_method({
                # always change MAC! address
                if ($opt =~ m/^net(\d+)$/) {
                    my $net = PVE::QemuServer::parse_net($value);
-                   $net->{macaddr} =  PVE::Tools::random_ether_addr();
+                   my $dc = PVE::Cluster::cfs_read_file('datacenter.cfg');
+                   $net->{macaddr} =  PVE::Tools::random_ether_addr($dc->{mac_prefix});
                    $newconf->{$opt} = PVE::QemuServer::print_net($net);
                } elsif (PVE::QemuServer::is_valid_drivename($opt)) {
                    my $drive = PVE::QemuServer::parse_drive($opt, $value);
index 75f6445441620aceb2078e3bea2a3dcae7e5eb30..12f5be84f2f32dd92e68c18387f37f42b8811215 100644 (file)
@@ -1692,7 +1692,10 @@ sub parse_net {
        warn $@;
        return undef;
     }
-    $res->{macaddr} = PVE::Tools::random_ether_addr() if !defined($res->{macaddr});
+    if (!defined($res->{macaddr})) {
+       my $dc = PVE::Cluster::cfs_read_file('datacenter.cfg');
+       $res->{macaddr} = PVE::Tools::random_ether_addr($dc->{mac_prefix});
+    }
     return $res;
 }
 
@@ -4932,12 +4935,13 @@ sub restore_update_config_line {
     return if $line =~ m/^parent:/;
     return if $line =~ m/^template:/; # restored VM is never a template
 
+    my $dc = PVE::Cluster::cfs_read_file('datacenter.cfg');
     if (($line =~ m/^(vlan(\d+)):\s*(\S+)\s*$/)) {
        # try to convert old 1.X settings
        my ($id, $ind, $ethcfg) = ($1, $2, $3);
        foreach my $devconfig (PVE::Tools::split_list($ethcfg)) {
            my ($model, $macaddr) = split(/\=/, $devconfig);
-           $macaddr = PVE::Tools::random_ether_addr() if !$macaddr || $unique;
+           $macaddr = PVE::Tools::random_ether_addr($dc->{mac_prefix}) if !$macaddr || $unique;
            my $net = {
                model => $model,
                bridge => "vmbr$ind",
@@ -4951,7 +4955,7 @@ sub restore_update_config_line {
     } elsif (($line =~ m/^(net\d+):\s*(\S+)\s*$/) && $unique) {
        my ($id, $netstr) = ($1, $2);
        my $net = parse_net($netstr);
-       $net->{macaddr} = PVE::Tools::random_ether_addr() if $net->{macaddr};
+       $net->{macaddr} = PVE::Tools::random_ether_addr($dc->{mac_prefix}) if $net->{macaddr};
        $netstr = print_net($net);
        print $outfd "$id: $netstr\n";
     } elsif ($line =~ m/^((ide|scsi|virtio|sata)\d+):\s*(\S+)\s*$/) {