Bug #13218 ยป 806.diff
| 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;
|
||
|
}
|
||