interfaces.lib.inc, fix and extend carp output in legacy_interfaces_details(), so we can use the proper values in status_interfaces.php

This commit is contained in:
Ad Schellevis 2019-07-23 11:48:17 +02:00
parent 32268f0530
commit 25728c5daa
2 changed files with 20 additions and 6 deletions

View File

@ -258,9 +258,12 @@ function legacy_interfaces_details($intf = null)
} elseif (strpos($line, "\tinet ") !== false) {
// IPv4 information
unset($mask);
unset($vhid);
for ($i = 0; $i < count($line_parts) - 1; ++$i) {
if ($line_parts[$i] == 'netmask') {
$mask = substr_count(base_convert(hexdec($line_parts[$i + 1]), 10, 2), '1');
} elseif ($line_parts[$i] == 'vhid') {
$vhid = $line_parts[$i+1];
}
}
if (isset($mask)) {
@ -268,6 +271,9 @@ function legacy_interfaces_details($intf = null)
if ($line_parts[2] == '-->') {
$tmp['endpoint'] = $line_parts[3];
}
if (isset($vhid)) {
$tmp['vhid'] = $vhid;
}
$result[$current_interface]["ipv4"][] = $tmp;
}
} elseif (strpos($line, "\tinet6 ") !== false) {
@ -277,6 +283,8 @@ function legacy_interfaces_details($intf = null)
for ($i = 0; $i < count($line_parts) - 1; ++$i) {
if ($line_parts[$i] == 'prefixlen') {
$tmp['subnetbits'] = intval($line_parts[$i + 1]);
} elseif ($line_parts[$i] == 'vhid') {
$tmp['vhid'] = $line_parts[$i+1];
}
if ($line_parts[$i] == '-->') {
$tmp['tunnel'] = true;
@ -320,11 +328,15 @@ function legacy_interfaces_details($intf = null)
array_shift($line_parts);
$result[$current_interface]['groups'] = $line_parts;
} elseif (strpos($line, "\tcarp: ") !== false) {
$result[$current_interface]["carp"] = array();
$result[$current_interface]["carp"]['status'] = $line_parts[1];
$result[$current_interface]["carp"]['vhid'] = $line_parts[3];
$result[$current_interface]["carp"]['advbase'] = $line_parts[5];
$result[$current_interface]["carp"]['advskew'] = $line_parts[7];
if (empty($result[$current_interface]["carp"])) {
$result[$current_interface]["carp"] = array();
}
$result[$current_interface]["carp"][] = array(
"status" => $line_parts[1],
"vhid" => $line_parts[3],
"advbase" => $line_parts[5],
"advskew" => $line_parts[7]
);
}
}

View File

@ -32,7 +32,9 @@ require_once("interfaces.lib.inc");
$statuses = array();
foreach (legacy_interfaces_details() as $intf) {
if (!empty($intf['carp'])) {
$statuses[$intf['carp']['status']] = true;
foreach ($intf['carp'] as $carpitem) {
$statuses[$carpitem['status']] = true;
}
}
}