5
0
mirror of git://git.proxmox.com/git/pve-common.git synced 2025-02-15 13:57:21 +03:00

fix bug #116, #103: try to keep ordering in /etc/network/interfaces

This commit is contained in:
Dietmar Maurer 2012-03-19 13:30:40 +01:00
parent 34ebb22690
commit ed4e6e0c51
3 changed files with 52 additions and 10 deletions

View File

@ -1,7 +1,7 @@
RELEASE=2.0
VERSION=1.0
PKGREL=19
PKGREL=20
PACKAGE=libpve-common-perl

View File

@ -727,9 +727,11 @@ sub read_etc_network_interfaces {
my $d = $ifaces->{$i};
while (defined ($line = <$fh>)) {
if ($line =~ m/^#(.*)\s*$/) {
$d->{comment} = '' if !$d->{comment};
$d->{comment} .= PVE::Tools::decode_text($1) . "\n";
if ($line =~ m/^\s*#(.*)\s*$/) {
# NOTE: we use 'comments' instead of 'comment' to
# avoid automatic utf8 conversion
$d->{comments} = '' if !$d->{comments};
$d->{comments} .= "$1\n";
} elsif ($line =~ m/^\s+((\S+)\s+(.+))$/) {
my $option = $1;
my ($id, $value) = ($2, $3);
@ -876,10 +878,10 @@ sub __interface_to_string {
$raw .= "\t$option\n";
}
# add comments
my $comment = $d->{comment} || '';
foreach my $cl (split(/\n/, $comment)) {
$raw .= '#' . PVE::Tools::encode_text($cl) . "\n";
# add comments
my $comments = $d->{comments} || '';
foreach my $cl (split(/\n/, $comments)) {
$raw .= "#$cl\n";
}
$raw .= "\n";
@ -894,14 +896,48 @@ sub write_etc_network_interfaces {
my $printed = {};
my $if_type_hash = {
loopback => 10,
eth => 20,
bond => 30,
bridge => 40,
};
my $lookup_type_prio = sub {
my $iface = shift;
my $alias = 0;
if ($iface =~ m/^(\S+):\d+$/) {
$iface = $1;
$alias = 1;
}
my $pri;
if ($iface eq 'lo') {
$pri = $if_type_hash->{loopback};
} elsif ($iface =~ m/^eth\d+$/) {
$pri = $if_type_hash->{eth} + $alias;
} elsif ($iface =~ m/^bond\d+$/) {
$pri = $if_type_hash->{bond} + $alias;
} elsif ($iface =~ m/^vmbr\d+$/) {
$pri = $if_type_hash->{bridge} + $alias;
}
return $pri || ($if_type_hash->{unknown} + $alias);
};
foreach my $iface (sort {
my $ref1 = $ifaces->{$a};
my $ref2 = $ifaces->{$b};
my $p1 = $ref1->{priority} || 100000;
my $p2 = $ref2->{priority} || 100000;
my $p1 = &$lookup_type_prio($a);
my $p2 = &$lookup_type_prio($b);
return $p1 <=> $p2 if $p1 != $p2;
$p1 = $ref1->{priority} || 100000;
$p2 = $ref2->{priority} || 100000;
return $p1 <=> $p2 if $p1 != $p2;
return $a cmp $b;
} keys %$ifaces) {

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
libpve-common-perl (1.0-20) unstable; urgency=low
* fix bug #116, #103: try to keep ordering in /etc/network/interfaces
-- Proxmox Support Team <support@proxmox.com> Mon, 19 Mar 2012 13:30:07 +0100
libpve-common-perl (1.0-19) unstable; urgency=low
* add dns-name format