mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-15 00:54:41 +00:00
interfaces: tweak interfaces_addresses() slightly
* Input an array of interfaces to get addresses from, saving multiple calls to ifconfig in the best case. * Return interface name, family and scope along with the actual address for further analysis.
This commit is contained in:
parent
225ba12ef8
commit
772ea4ace1
@ -4674,23 +4674,29 @@ function make_ipv6_64_address($prefix, $suffix)
|
||||
return implode(':', $prefix_array);
|
||||
}
|
||||
|
||||
function interfaces_addresses($interface)
|
||||
function interfaces_addresses($interfaces)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$realifs = array();
|
||||
$result = array();
|
||||
|
||||
if ($interface == 'lo0') {
|
||||
$realifs[] = 'lo0';
|
||||
} elseif (!isset($config['interfaces'][$interface])) {
|
||||
return $result;
|
||||
if (!is_array($interfaces)) {
|
||||
$interfaces = array($interfaces);
|
||||
}
|
||||
|
||||
foreach (array('all', 'inet6') as $af) {
|
||||
$realif = get_real_interface($interface, $af);
|
||||
if (!empty($realif) && !in_array($realif, $realifs)) {
|
||||
$realifs[] = $realif;
|
||||
foreach ($interfaces as $interface) {
|
||||
if ($interface == 'lo0') {
|
||||
$realifs[] = 'lo0';
|
||||
}
|
||||
|
||||
if (isset($config['interfaces'][$interface])) {
|
||||
foreach (array('all', 'inet6') as $family) {
|
||||
$realif = get_real_interface($interface, $family);
|
||||
if (!empty($realif) && !in_array($realif, $realifs)) {
|
||||
$realifs[] = $realif;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -4713,7 +4719,11 @@ function interfaces_addresses($interface)
|
||||
if (!empty($address['link-local'])) {
|
||||
$scope = "%{$realif}";
|
||||
}
|
||||
$result[] = "{$address['ipaddr']}{$scope}";
|
||||
$result["{$address['ipaddr']}{$scope}"] = array(
|
||||
'family' => $proto == 'ipv4' ? 'inet' : 'inet6',
|
||||
'scope' => !empty($scope),
|
||||
'name' => $realif,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,16 +122,18 @@ function dnsmasq_configure_do($verbose = false)
|
||||
$interfaces[] = 'lo0';
|
||||
$addresses = array();
|
||||
|
||||
foreach ($interfaces as $interface) {
|
||||
foreach (interfaces_addresses($interface) as $tmpaddr) {
|
||||
if ($interface == 'lo0' && is_ipaddrv4($tmpaddr) && $tmpaddr != '127.0.0.1') {
|
||||
continue;
|
||||
}
|
||||
/* link-local does not seem to be supported */
|
||||
if (strstr($tmpaddr, '%') === false && !is_linklocal($tmpaddr)) {
|
||||
$addresses[] = $tmpaddr;
|
||||
}
|
||||
foreach (interfaces_addresses($interfaces) as $tmpaddr => $info) {
|
||||
if ($info['name'] == 'lo0' && $info['family'] == 'inet' && $tmpaddr != '127.0.0.1') {
|
||||
/* allow other DNS services to bind to loopback aliases */
|
||||
continue;
|
||||
}
|
||||
|
||||
if ($info['scope']) {
|
||||
/* link-local does not seem to be supported */
|
||||
continue;
|
||||
}
|
||||
|
||||
$addresses[] = $tmpaddr;
|
||||
}
|
||||
|
||||
foreach ($addresses as $address) {
|
||||
|
||||
@ -186,13 +186,13 @@ function openssh_configure_do($verbose = false, $interface = '')
|
||||
|
||||
$listeners = array();
|
||||
|
||||
foreach ($interfaces as $interface) {
|
||||
foreach (interfaces_addresses($interface) as $tmpaddr) {
|
||||
foreach (interfaces_addresses($interfaces) as $tmpaddr => $info) {
|
||||
if ($info['scope']) {
|
||||
/* link-local does not seem to be supported */
|
||||
if (strstr($tmpaddr, '%') === false && !is_linklocal($tmpaddr)) {
|
||||
$listeners[] = $tmpaddr;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
$listeners[] = $tmpaddr;
|
||||
}
|
||||
|
||||
foreach ($listeners as $listener) {
|
||||
|
||||
@ -166,13 +166,13 @@ EOF;
|
||||
$active_interfaces[] = 'lo0';
|
||||
$addresses = array();
|
||||
|
||||
foreach ($active_interfaces as $ubif) {
|
||||
foreach (interfaces_addresses($ubif) as $tmpaddr) {
|
||||
if ($ubif == 'lo0' && is_ipaddrv4($tmpaddr) && $tmpaddr != '127.0.0.1') {
|
||||
continue;
|
||||
}
|
||||
$addresses[] = $tmpaddr;
|
||||
foreach (interfaces_addresses($active_interfaces) as $tmpaddr => $info) {
|
||||
if ($info['name'] == 'lo0' && $info['family'] == 'inet' && $tmpaddr != '127.0.0.1') {
|
||||
/* allow other DNS services to bind to loopback aliases */
|
||||
continue;
|
||||
}
|
||||
|
||||
$addresses[] = $tmpaddr;
|
||||
}
|
||||
|
||||
foreach ($addresses as $address) {
|
||||
|
||||
@ -58,13 +58,13 @@ function webgui_configure_do($verbose = false, $interface = '')
|
||||
|
||||
$listeners = count($interfaces) ? array() : array('0.0.0.0', '::');
|
||||
|
||||
foreach ($interfaces as $interface) {
|
||||
foreach (interfaces_addresses($interface) as $tmpaddr) {
|
||||
foreach (interfaces_addresses($interfaces) as $tmpaddr => $info) {
|
||||
if ($info['scope']) {
|
||||
/* link-local does not seem to be supported */
|
||||
if (strstr($tmpaddr, '%') === false && !is_linklocal($tmpaddr)) {
|
||||
$listeners[] = $tmpaddr;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
$listeners[] = $tmpaddr;
|
||||
}
|
||||
|
||||
chdir('/usr/local/www');
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user