Project

General

Profile

Bug #13218 ยป 806.diff

Viktor Gurov, 05/27/2022 02:59 AM

View differences:

src/etc/inc/interfaces.inc
function interface_find_child_cfgmtu($realiface) {
global $config;
$interface = convert_real_interface_to_friendly_interface_name($realiface);
$vlans = link_interface_to_vlans($realiface);
$qinqs = link_interface_to_qinqs($realiface);
$bridge = link_interface_to_bridge($realiface);
$gifs = link_interface_to_tunnelif($interface, 'gif');
$gres = link_interface_to_tunnelif($interface, 'gre');
$mtu = 0;
if (is_array($vlans)) {
foreach ($vlans as $vlan) {
$ifass = convert_real_interface_to_friendly_interface_name($vlan['vlanif']);
if (empty($ifass)) {
continue;
}
if (!empty($config['interfaces'][$ifass]['mtu'])) {
if (intval($config['interfaces'][$ifass]['mtu']) > $mtu) {
foreach (array($vlans, $qinqs, array('bridge' => $bridge)) as $ints) {
if (is_array($ints)) {
foreach ($ints as $int) {
$ifass = convert_real_interface_to_friendly_interface_name($int['vlanif']);
if (empty($ifass) && isset($config['interfaces'][$ifass]['enable']) &&
!empty($config['interfaces'][$ifass]['mtu']) &&
(intval($config['interfaces'][$ifass]['mtu']) > $mtu)) {
$mtu = intval($config['interfaces'][$ifass]['mtu']);
}
}
}
}
if (is_array($qinqs)) {
foreach ($qinqs as $qinq) {
$ifass = convert_real_interface_to_friendly_interface_name($qinq['vlanif']);
if (empty($ifass)) {
continue;
}
if (!empty($config['interfaces'][$ifass]['mtu'])) {
if (intval($config['interfaces'][$ifass]['mtu']) > $mtu) {
$mtu = intval($config['interfaces'][$ifass]['mtu']);
}
}
}
}
foreach ($gifs as $gif) {
$ifass = convert_real_interface_to_friendly_interface_name($gif['gifif']);
if (empty($ifass)) {
continue;
}
if (!empty($config['interfaces'][$ifass]['mtu'])) {
if (intval($config['interfaces'][$ifass]['mtu']) > $mtu) {
$mtu = intval($config['interfaces'][$ifass]['mtu']);
}
}
}
foreach ($gres as $gre) {
$ifass = convert_real_interface_to_friendly_interface_name($gre['greif']);
if (empty($ifass)) {
continue;
}
if (!empty($config['interfaces'][$ifass]['mtu'])) {
if (intval($config['interfaces'][$ifass]['mtu']) > $mtu) {
$mtu = intval($config['interfaces'][$ifass]['mtu']);
}
}
}
$ifass = convert_real_interface_to_friendly_interface_name($bridge);
if (!empty($ifass) && !empty($config['interfaces'][$ifass]['mtu'])) {
if (intval($config['interfaces'][$ifass]['mtu']) > $mtu) {
$mtu = intval($config['interfaces'][$ifass]['mtu']);
}
}
unset($vlans, $bridge, $gifs, $gres, $ifass, $vlan);
return $mtu;
}
    (1-1/1)