sub register_regex {
my ($dir, $regex, $parser, $writer, $update, %options) = @_;
- die "can't register regex after initify_init" if $inotify;
+ die "can't register regex after inotify_init" if $inotify;
my $uid = "$dir/$regex";
die "regular expression '$uid' already added :ERROR" if defined ($ccacheregex->{$uid});
\&write_active_workers);
-my $bond_modes = { 'balance-rr' => 0,
+our $bond_modes = { 'balance-rr' => 0,
'active-backup' => 1,
'balance-xor' => 2,
'broadcast' => 3,
sub read_etc_network_interfaces {
my ($filename, $fh) = @_;
my $proc_net_dev = IO::File->new('/proc/net/dev', 'r');
- my $proc_net_if_inet6 = IO::File->new('/proc/net/if_inet6', 'r');
- return __read_etc_network_interfaces($fh, $proc_net_dev, $proc_net_if_inet6);
+ my $active = PVE::Network::get_active_interfaces();
+ return __read_etc_network_interfaces($fh, $proc_net_dev, $active);
}
sub __read_etc_network_interfaces {
- my ($fh, $proc_net_dev, $proc_net_if_inet6) = @_;
+ my ($fh, $proc_net_dev, $active_ifaces) = @_;
my $config = {};
my $ifaces = $config->{ifaces} = {};
if ($proc_net_dev) {
while (defined ($line = <$proc_net_dev>)) {
- if ($line =~ m/^\s*(eth\d+):.*/) {
+ if ($line =~ m/^\s*(eth\d+|en[^:.]+):.*/) {
$ifaces->{$1}->{exists} = 1;
}
}
}
}
-
+ foreach my $ifname (@$active_ifaces) {
+ if (my $iface = $ifaces->{$ifname}) {
+ $iface->{active} = 1;
+ }
+ }
if (!$ifaces->{lo}) {
$ifaces->{lo}->{priority} = 1;
$ifaces->{$1}->{exists} = 0;
$d->{exists} = 0;
}
- } elsif ($iface =~ m/^eth\d+$/) {
+ } elsif ($iface =~ m/^(?:eth\d+|en[^:.]+)$/) {
if (!$d->{ovs_type}) {
$d->{type} = 'eth';
} elsif ($d->{ovs_type} eq 'OVSPort') {
$d->{families} ||= ['inet'];
}
- if ($proc_net_if_inet6) {
- while (defined ($line = <$proc_net_if_inet6>)) {
- if ($line =~ m/^[a-f0-9]{32}\s+[a-f0-9]{2}\s+[a-f0-9]{2}\s+[a-f0-9]{2}\s+[a-f0-9]{2}\s+(\S+)$/) {
- $ifaces->{$1}->{active} = 1 if defined($ifaces->{$1});
- }
- }
- close ($proc_net_if_inet6);
- }
-
# OVS bridges create "allow-$BRIDGE $IFACE" lines which we need to remove
# from the {options} hash for them to be removed correctly.
@$options = grep {defined($_)} map {
$d->{type} eq 'OVSBond') {
my $brname = $used_ports->{$iface};
if (!$brname || !$ifaces->{$brname}) {
- if ($iface =~ /^eth/) {
+ if ($iface =~ /^(?:eth|en)/) {
$ifaces->{$iface} = { type => 'eth',
exists => 1,
method => 'manual',
my $pri;
if ($iface eq 'lo') {
$pri = $if_type_hash->{loopback};
- } elsif ($iface =~ m/^eth\d+$/) {
+ } elsif ($iface =~ m/^(?:eth\d+|en[^:.]+)$/) {
$pri = $if_type_hash->{eth} + $child;
} elsif ($iface =~ m/^bond\d+$/) {
$pri = $if_type_hash->{bond} + $child;