mirror of
https://github.com/webmin/webmin.git
synced 2026-08-05 23:40:43 +01:00
Handle new style interface config files seen on CentOS 7
This commit is contained in:
@@ -436,26 +436,27 @@ return ($gconfig{'os_type'} eq 'debian-linux' &&
|
||||
# Returns a human-readable interface type name
|
||||
sub iface_type
|
||||
{
|
||||
if ($_[0] =~ /^(.*)\.(\d+)$/) {
|
||||
my ($name) = @_;
|
||||
if ($name =~ /^(.*)\.(\d+)$/) {
|
||||
return &iface_type("$1")." VLAN";
|
||||
}
|
||||
return "PPP" if ($_[0] =~ /^ppp/);
|
||||
return "SLIP" if ($_[0] =~ /^sl/);
|
||||
return "PLIP" if ($_[0] =~ /^plip/);
|
||||
return "Ethernet" if ($_[0] =~ /^eth|em|eno|ens|enp|enx|p\d+p\d+/);
|
||||
return "Wireless Ethernet" if ($_[0] =~ /^(wlan|ath)/);
|
||||
return "Arcnet" if ($_[0] =~ /^arc/);
|
||||
return "Token Ring" if ($_[0] =~ /^tr/);
|
||||
return "Pocket/ATP" if ($_[0] =~ /^atp/);
|
||||
return "Loopback" if ($_[0] =~ /^lo/);
|
||||
return "ISDN rawIP" if ($_[0] =~ /^isdn/);
|
||||
return "ISDN syncPPP" if ($_[0] =~ /^ippp/);
|
||||
return "CIPE" if ($_[0] =~ /^cip/);
|
||||
return "VmWare" if ($_[0] =~ /^vmnet/);
|
||||
return "Wireless" if ($_[0] =~ /^wlan/);
|
||||
return "Bonded" if ($_[0] =~ /^bond/);
|
||||
return "OpenVZ" if ($_[0] =~ /^venet/);
|
||||
return "Bridge" if ($_[0] =~ /^br/);
|
||||
return "PPP" if ($name =~ /^ppp/);
|
||||
return "SLIP" if ($name =~ /^sl/);
|
||||
return "PLIP" if ($name =~ /^plip/);
|
||||
return "Ethernet" if ($name =~ /^eth|em|eno|ens|enp|enx|p\d+p\d+/);
|
||||
return "Wireless Ethernet" if ($name =~ /^(wlan|ath)/);
|
||||
return "Arcnet" if ($name =~ /^arc/);
|
||||
return "Token Ring" if ($name =~ /^tr/);
|
||||
return "Pocket/ATP" if ($name =~ /^atp/);
|
||||
return "Loopback" if ($name =~ /^lo/);
|
||||
return "ISDN rawIP" if ($name =~ /^isdn/);
|
||||
return "ISDN syncPPP" if ($name =~ /^ippp/);
|
||||
return "CIPE" if ($name =~ /^cip/);
|
||||
return "VmWare" if ($name =~ /^vmnet/);
|
||||
return "Wireless" if ($name =~ /^wlan/);
|
||||
return "Bonded" if ($name =~ /^bond/);
|
||||
return "OpenVZ" if ($name =~ /^venet/);
|
||||
return "Bridge" if ($name =~ /^br/);
|
||||
return $text{'ifcs_unknown'};
|
||||
}
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ sub boot_interfaces
|
||||
{
|
||||
local (@rv, $f);
|
||||
local %bridge_map;
|
||||
local @active;
|
||||
opendir(CONF, &translate_filename($net_scripts_dir));
|
||||
while($f = readdir(CONF)) {
|
||||
local (%conf, $b);
|
||||
@@ -81,15 +82,42 @@ while($f = readdir(CONF)) {
|
||||
$b->{'file'} = "$net_scripts_dir/$f";
|
||||
push(@rv, $b);
|
||||
}
|
||||
elsif ($f !~ /\.(bak|old)$/i && $f =~ /^ifcfg-([a-z0-9:\.]+)$/) {
|
||||
elsif ($f !~ /\.(bak|old)$/i && $f =~ /^ifcfg-([a-zA-Z_0-9:\.]+)$/) {
|
||||
# Normal interface
|
||||
my $fname = $1;
|
||||
&read_env_file("$net_scripts_dir/$f", \%conf);
|
||||
$b->{'fullname'} = $conf{'DEVICE'} || $1;
|
||||
if ($conf{'DEVICE'}) {
|
||||
# Device is set in the file
|
||||
$b->{'fullname'} = $conf{'DEVICE'};
|
||||
}
|
||||
elsif (&iface_type($fname) ne $text{'ifcs_unknown'}) {
|
||||
# Filename looks like a regular device
|
||||
$b->{'fullname'} = $fname;
|
||||
}
|
||||
elsif ($conf{'HWADDR'}) {
|
||||
# Filename is something odd, like Auto_Ethernet .. so
|
||||
# lookup real device by MAC
|
||||
if (!@active) {
|
||||
@active = &active_interfaces();
|
||||
}
|
||||
my ($a) = grep { lc($_->{'ether'}) eq
|
||||
lc($conf{'HWADDR'}) } @active;
|
||||
next if (!$a);
|
||||
$b->{'fullname'} = $a->{'fullname'};
|
||||
# XXX virtuals?
|
||||
}
|
||||
else {
|
||||
# No idea what to do here, probably isn't even an
|
||||
# interface file
|
||||
next;
|
||||
}
|
||||
if ($b->{'fullname'} =~ /(\S+):(\d+)/) {
|
||||
$b->{'name'} = $1;
|
||||
$b->{'virtual'} = $2;
|
||||
}
|
||||
else { $b->{'name'} = $b->{'fullname'}; }
|
||||
else {
|
||||
$b->{'name'} = $b->{'fullname'};
|
||||
}
|
||||
if ($b->{'fullname'} =~ /(\S+)\.(\d+)/) {
|
||||
my ($k, $v) = split(/\./, $b->{'fullname'});
|
||||
$b->{'physical'} = $k;
|
||||
@@ -100,11 +128,14 @@ while($f = readdir(CONF)) {
|
||||
$b->{'virtual'} ne '' ?
|
||||
($conf{'ONPARENT'} eq 'yes') :
|
||||
($conf{'ONBOOT'} eq 'yes');
|
||||
$b->{'address'} = $conf{'IPADDR'};
|
||||
$b->{'netmask'} = $conf{'NETMASK'};
|
||||
$b->{'address'} = $conf{'IPADDR'} || $conf{'IPADDR0'};
|
||||
$b->{'netmask'} = $conf{'NETMASK'} || $conf{'NETMASK0'};
|
||||
if (!$conf{'NETMASK'} && $conf{'PREFIX'}) {
|
||||
$b->{'netmask'} = &prefix_to_mask($conf{'PREFIX'});
|
||||
}
|
||||
elsif (!$conf{'NETMASK'} && $conf{'PREFIX0'}) {
|
||||
$b->{'netmask'} = &prefix_to_mask($conf{'PREFIX0'});
|
||||
}
|
||||
$b->{'broadcast'} = $conf{'BROADCAST'};
|
||||
if (!$b->{'broadcast'} && $b->{'address'} && $b->{'netmask'}) {
|
||||
$b->{'broadcast'} = &compute_broadcast($b->{'address'},
|
||||
@@ -204,17 +235,18 @@ if ($_[0]->{'range'} ne "") {
|
||||
else {
|
||||
# Saving a normal interface
|
||||
$conf{'DEVICE'} = $name;
|
||||
$conf{'IPADDR'} = $_[0]->{'address'};
|
||||
$conf{'NETMASK'} = $_[0]->{'netmask'};
|
||||
delete($conf{'PREFIX'});
|
||||
my $pfx = $conf{'IPADDR0'} ? '0' : '';
|
||||
$conf{'IPADDR'.$pfx} = $_[0]->{'address'};
|
||||
$conf{'NETMASK'.$pfx} = $_[0]->{'netmask'};
|
||||
delete($conf{'PREFIX'.$pfx});
|
||||
if ($_[0]->{'address'} && $_[0]->{'netmask'}) {
|
||||
$conf{'NETWORK'} = &compute_network($_[0]->{'address'},
|
||||
$_[0]->{'netmask'});
|
||||
$conf{'NETWORK'.$pfx} = &compute_network($_[0]->{'address'},
|
||||
$_[0]->{'netmask'});
|
||||
}
|
||||
else {
|
||||
$conf{'NETWORK'} = '';
|
||||
$conf{'NETWORK'.$pfx} = '';
|
||||
}
|
||||
$conf{'BROADCAST'} = $_[0]->{'broadcast'};
|
||||
$conf{'BROADCAST'.$pfx} = $_[0]->{'broadcast'};
|
||||
if ($_[0]->{'gateway'}) {
|
||||
$conf{'GATEWAY'} = $_[0]->{'gateway'};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user