fix bug #6: correctly implement bridged mode for openvz

This commit is contained in:
Dietmar Maurer 2011-10-05 10:33:26 +02:00
parent dc5b8f7dff
commit 877d3f6de7
2 changed files with 28 additions and 9 deletions

View File

@ -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;

View File

@ -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 };
}
}
},
{