diff --git a/PVE/OpenVZ.pm b/PVE/OpenVZ.pm index 43ef2de1..6d4a7a9d 100644 --- a/PVE/OpenVZ.pm +++ b/PVE/OpenVZ.pm @@ -371,7 +371,8 @@ sub parse_netif { } } if ($d->{ifname}) { - $d->{raw} = $data; + $d->{mac} = PVE::Tools::random_ether_addr() if !$d->{mac}; + $d->{raw} = print_netif($d); $res->{$d->{ifname}} = $d; } else { return undef; @@ -381,6 +382,18 @@ sub parse_netif { return $res; } +sub print_netif { + my $net = shift; + + my $res = "ifname=$net->{ifname}"; + $res .= ",mac=$net->{mac}" if $net->{mac}; + $res .= ",host_ifname=$net->{host_ifname}" if $net->{host_ifname}; + $res .= ",host_mac=$net->{host_mac}" if $net->{host_mac}; + $res .= ",bridge=$net->{bridge}" if $net->{bridge}; + + return $res; +} + PVE::JSONSchema::register_format('pve-openvz-netif', \&verify_netif); sub verify_netif { my ($value, $noerr) = @_; @@ -901,14 +914,17 @@ sub update_ovz_config { my $newvalue = ''; foreach my $ifname (sort keys %$newif) { $newvalue .= ';' if $newvalue; - $newvalue .= $ifname; - $newvalue .= $newif->{$ifname}->{mac} ? ",$newif->{$ifname}->{mac}" : ','; - $newvalue .= $newif->{$ifname}->{host_ifname} ? ",$newif->{$ifname}->{host_ifname}" : ','; - $newvalue .= $newif->{$ifname}->{host_mac} ? ",$newif->{$ifname}->{host_mac}" : ','; - $newvalue .= $newif->{$ifname}->{bridge} ? ",$newif->{$ifname}->{bridge}" : ''; + + $newvalue .= print_netif($newif->{$ifname}); + + my $ifadd = $ifname; + $ifadd .= $newif->{$ifname}->{mac} ? ",$newif->{$ifname}->{mac}" : ','; + $ifadd .= $newif->{$ifname}->{host_ifname} ? ",$newif->{$ifname}->{host_ifname}" : ','; + $ifadd .= $newif->{$ifname}->{host_mac} ? ",$newif->{$ifname}->{host_mac}" : ','; + $ifadd .= $newif->{$ifname}->{bridge} ? ",$newif->{$ifname}->{bridge}" : ''; if (!$ifaces->{$ifname} || ($ifaces->{$ifname}->{raw} ne $newif->{$ifname}->{raw})) { - push @$changes, '--netif_add', $newvalue; + push @$changes, '--netif_add', $ifadd; } } $veconf->{netif}->{value} = $newvalue; diff --git a/www/manager/openvz/CreateWizard.js b/www/manager/openvz/CreateWizard.js index 1037d487..dcff8e55 100644 --- a/www/manager/openvz/CreateWizard.js +++ b/www/manager/openvz/CreateWizard.js @@ -219,8 +219,11 @@ Ext.define('PVE.openvz.CreateWizard', { bridgesel ], onGetValues: function(values) { - delete values.networkmode; - return values; + if (values.networkmode === 'bridge') { + return { netif: 'ifname=eth0,bridge=' + values.bridge }; + } else { + return { ip_address: values.ip_address }; + } } }, {