X-Git-Url: https://git.proxmox.com/?p=pve-common.git;a=blobdiff_plain;f=src%2FPVE%2FINotify.pm;h=dee9a3e9b2b6a48b0780b5a76feda425b269e5c1;hp=6892b4c6bf25eb517a881874437aaf9e56e0e32f;hb=1b505ae2390fe355600a9405c4f29879e62769b9;hpb=fc158d0d9c99ed4523e30043a3705f812445c7b5 diff --git a/src/PVE/INotify.pm b/src/PVE/INotify.pm index 6892b4c..dee9a3e 100644 --- a/src/PVE/INotify.pm +++ b/src/PVE/INotify.pm @@ -759,11 +759,16 @@ my $check_mtu = sub { die "check mtu - missing parent interface\n" if !$parent; die "check mtu - missing child interface\n" if !$child; - my $pmtu = $ifaces->{$parent}->{mtu} ? $ifaces->{$parent}->{mtu} : 1500; - my $cmtu = $ifaces->{$child}->{mtu} ? $ifaces->{$child}->{mtu} : 1500; + my $cmtu = $ifaces->{$child}->{mtu}; + return if !$cmtu; - die "interface '$parent' - mtu $pmtu is bigger than '$child' - mtu $cmtu\n" - if $pmtu > $cmtu; + my $parentdata = $ifaces->{$parent}; + my $pmtu = $parentdata->{mtu}; + $pmtu = $cmtu if $parentdata->{type} eq 'bond' && !$pmtu; + $pmtu = 1500 if !$pmtu; + + die "interface '$parent' - mtu $pmtu is lower than '$child' - mtu $cmtu\n" + if $pmtu < $cmtu; }; # config => { @@ -868,10 +873,9 @@ sub __read_etc_network_interfaces { while (defined ($line = <$fh>)) { chomp $line; if ($line =~ m/^\s*#(.*?)\s*$/) { - # NOTE: we use 'comments' instead of 'comment' to - # avoid automatic utf8 conversion $f->{comments} = '' if !$f->{comments}; - $f->{comments} .= "$1\n"; + my $comment = decode('UTF-8', $1); + $f->{comments} .= "$comment\n"; } elsif ($line =~ m/^\s*(?:iface\s |mapping\s |auto\s @@ -1247,7 +1251,7 @@ sub write_etc_network_interfaces { my ($filename, $fh, $config) = @_; my $ifupdown2 = -e '/usr/share/ifupdown2'; my $raw = __write_etc_network_interfaces($config, $ifupdown2); - PVE::Tools::safe_print($filename, $fh, $raw); + PVE::Tools::safe_print($filename, $fh, encode('UTF-8', $raw)); } sub __write_etc_network_interfaces { my ($config, $ifupdown2) = @_; @@ -1393,7 +1397,7 @@ sub __write_etc_network_interfaces { die "vlan '$iface' - wrong interface type on parent '$p' " . "('$n->{type}' != 'eth|bond|bridge' )\n"; } - &$check_mtu($ifaces, $iface, $p); + &$check_mtu($ifaces, $p, $iface); } } @@ -1404,6 +1408,7 @@ sub __write_etc_network_interfaces { my $d = $ifaces->{$iface}; if ($d->{type} eq 'bridge') { foreach my $p (split (/\s+/, $d->{bridge_ports})) { + $p =~ s/\.\d+$//; my $n = $ifaces->{$p}; die "bridge '$iface' - unable to find bridge port '$p'\n" if !$n;