From c9dc864557b5aecdcad561e6072cbba2e6815608 Mon Sep 17 00:00:00 2001 From: Dietmar Maurer Date: Fri, 2 Mar 2012 12:49:01 +0100 Subject: [PATCH] try to keep ordering in /etc/network/interfaces --- Makefile | 2 +- data/PVE/INotify.pm | 29 +++++++++++++++++++++-------- debian/changelog | 6 ++++++ 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index 6474818..24e5346 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ RELEASE=2.0 VERSION=1.0 -PKGREL=17 +PKGREL=18 PACKAGE=libpve-common-perl diff --git a/data/PVE/INotify.pm b/data/PVE/INotify.pm index 0c4da4c..12dc11b 100644 --- a/data/PVE/INotify.pm +++ b/data/PVE/INotify.pm @@ -692,6 +692,9 @@ sub read_etc_network_interfaces { close($fd2); } + # we try to keep order inside the file + my $priority = 2; # 1 is reserved for lo + # always add the vmbr0 bridge device $ifaces->{vmbr0}->{exists} = 1; @@ -720,6 +723,7 @@ sub read_etc_network_interfaces { } elsif ($line =~ m/^iface\s+(\S+)\s+inet\s+(\S+)\s*$/) { my $i = $1; $ifaces->{$i}->{method} = $2; + $ifaces->{$i}->{priority} = $priority++; my $d = $ifaces->{$i}; while (defined ($line = <$fh>)) { @@ -778,6 +782,7 @@ sub read_etc_network_interfaces { } if (!$ifaces->{lo}) { + $ifaces->{lo}->{priority} = 1; $ifaces->{lo}->{method} = 'loopback'; $ifaces->{lo}->{type} = 'loopback'; $ifaces->{lo}->{autostart} = 1; @@ -889,16 +894,24 @@ sub write_etc_network_interfaces { my $printed = {}; - foreach my $t (('lo', 'eth', '')) { - foreach my $iface (sort keys %$ifaces) { - my $d = $ifaces->{$iface}; + foreach my $iface (sort { + my $ref1 = $ifaces->{$a}; + my $ref2 = $ifaces->{$b}; + my $p1 = $ref1->{priority} || 100000; + my $p2 = $ref2->{priority} || 100000; - next if $printed->{$iface}; - next if $iface !~ m/^$t/; + return $p1 <=> $p2 if $p1 != $p2; - $printed->{$iface} = 1; - $raw .= __interface_to_string($iface, $d); - } + + return $a cmp $b; + } keys %$ifaces) { + + my $d = $ifaces->{$iface}; + + next if $printed->{$iface}; + + $printed->{$iface} = 1; + $raw .= __interface_to_string($iface, $d); } PVE::Tools::safe_print($filename, $fh, $raw); diff --git a/debian/changelog b/debian/changelog index 3ccea56..0cb7857 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +libpve-common-perl (1.0-18) unstable; urgency=low + + * try to keep ordering in /etc/network/interfaces + + -- Proxmox Support Team Fri, 02 Mar 2012 12:33:34 +0100 + libpve-common-perl (1.0-17) unstable; urgency=low * better error message for usermod command -- 2.39.2