5
0
mirror of git://git.proxmox.com/git/pve-common.git synced 2025-01-03 09:17:36 +03:00

inotify: network: improve "allow-hotplug" & "auto" interaction

commit c86cfb8bbd dropped allow-hotplug
from the primary interfaces file completely on write, but that breaks
setups that come from plain Debian.

Instead, as stop-gap measurement, transform "allow-hotplug" to auto
in the PVE controlled config.

That avoids conflict and improves installing PVE on top of plain
Debian, as the interface still comes up after the first reboot.

But it is not ideal auto is not the same as hotplug, so we need to
also track that difference in the future, but that needs some
adaptions in the API too (change autostart from boolean to
string+enum or so=

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
Thomas Lamprecht 2021-09-24 12:29:46 +02:00
parent ed94660616
commit 0dc7fd7b50
4 changed files with 65 additions and 1 deletions

View File

@ -904,12 +904,16 @@ sub __read_etc_network_interfaces {
SECTION: while (defined ($line = <$fh>)) {
chomp ($line);
next if $line =~ m/^\s*#/;
next if $line =~ m/^\s*(allow-hotplug)\s+(.*)$/;
if ($line =~ m/^\s*(allow-auto|auto|allow-ovs)\s+(.*)$/) {
$ifaces->{$_}->{autostart} = 1 for split (/\s+/, $2);
} elsif ($line =~ m/^\s*(allow-hotplug)\s+(.*)$/) {
# FIXME: handle those differently? auto makes it required on-boot, vs. best-effort
$ifaces->{$_}->{autostart} = 1 for split (/\s+/, $2);
} elsif ($line =~ m/^\s*iface\s+(\S+)\s+(inet6?)\s+(\S+)\s*$/) {
my $i = $1;
my $family = $2;

View File

@ -0,0 +1,17 @@
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT read its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!
auto lo
iface lo inet loopback
allow-hotplug ens18
iface ens18 inet dhcp

View File

@ -0,0 +1,18 @@
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage parts of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT read its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!
auto lo
iface lo inet loopback
auto ens18
allow-hotplug ens18
iface ens18 inet dhcp

View File

@ -0,0 +1,25 @@
my $active_ifaces = ['lo', 'ens18', 'ens'];
my $proc_net = load('proc_net_dev');
$proc_net =~ s/eth0/ens18/;
my $wanted = load('base-allow-hotplug');
# parse the config
r($wanted, $proc_net, $active_ifaces);
$wanted =~ s/allow-hotplug ens18/auto ens18/; # FIXME: hack! rather we need to keep allow-hotplug!
expect $wanted;
# idempotency (save, re-parse, and re-check)
r(w(), $proc_net, $active_ifaces);
expect $wanted;
# parse one with both, "auto" and "allow-hotplug"
my $bad = load('base-auto-allow-hotplug');
r($bad, $proc_net, $active_ifaces);
# should drop the first occuring one of the conflicting options ("auto" currently)
expect $wanted;
1;