mirror of
https://github.com/lucaspalomodevelop/core.git
synced 2026-03-16 01:24:38 +00:00
lagg interfaces, restructure interface_lagg_configure() and add mtu option, for https://github.com/opnsense/core/issues/1709
This commit is contained in:
parent
e5e914c90f
commit
4ff07cad63
@ -704,34 +704,47 @@ function interface_lagg_configure(&$lagg)
|
||||
if (!count($members)) {
|
||||
return -1;
|
||||
}
|
||||
$interface_stats = legacy_interfaces_details();
|
||||
|
||||
if (file_exists("/var/run/booting") || !(empty($lagg['laggif']))) {
|
||||
legacy_interface_destroy($lagg['laggif']);
|
||||
legacy_interface_create($lagg['laggif']);
|
||||
if (!empty($lagg['laggif'])) {
|
||||
$laggif = $lagg['laggif'];
|
||||
if (empty($interface_stats[$laggif])) {
|
||||
legacy_interface_create($lagg['laggif']);
|
||||
} else {
|
||||
// Already configured, detach child interfaces before attempting to configure.
|
||||
// Prevents vlans to loose parent.
|
||||
if (!empty($interface_stats[$laggif]['laggport'])) {
|
||||
foreach ($interface_stats[$laggif]['laggport'] as $laggport) {
|
||||
mwexec("/sbin/ifconfig {$laggif} -laggport {$laggport}");
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$laggif = legacy_interface_create('lagg');
|
||||
}
|
||||
|
||||
/* Calculate smaller mtu and enforce it */
|
||||
|
||||
// determine mtu value to use, either the provided one for the lagg or smallest of it's children
|
||||
$mtu = null;
|
||||
foreach ($members as $member) {
|
||||
$opts = legacy_interface_stats($member);
|
||||
if (!empty($opts['mtu']) && ($mtu == null || $opts['mtu'] < $mtu)) {
|
||||
$mtu = $opts['mtu'];
|
||||
if (!empty($lagg['mtu'])) {
|
||||
// mtu provided for lagg
|
||||
$mtu = $lagg['mtu'];
|
||||
} else {
|
||||
// min() mtu of children
|
||||
foreach ($members as $member) {
|
||||
if (!empty($interface_stats[$member]['mtu']) && ($mtu == null || $interface_stats[$member]['mtu'] < $mtu)) {
|
||||
$mtu = $interface_stats[$member]['mtu'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$checklist = get_interface_list();
|
||||
foreach ($members as $member) {
|
||||
if (!array_key_exists($member, $checklist)) {
|
||||
continue;
|
||||
if (!empty($interface_stats[$member])) {
|
||||
legacy_interface_mtu($member, $mtu);
|
||||
configure_interface_hardware($member);
|
||||
interfaces_bring_up($member);
|
||||
mwexec("/sbin/ifconfig {$laggif} laggport {$member}");
|
||||
}
|
||||
|
||||
legacy_interface_mtu($member, $mtu);
|
||||
configure_interface_hardware($member);
|
||||
interfaces_bring_up($member);
|
||||
mwexec("/sbin/ifconfig {$laggif} laggport {$member}");
|
||||
}
|
||||
|
||||
mwexec("/sbin/ifconfig {$laggif} laggproto " . escapeshellarg($lagg['proto']));
|
||||
|
||||
@ -93,6 +93,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
$pconfig['proto'] = isset($a_laggs[$id]['proto']) ? $a_laggs[$id]['proto'] : null;
|
||||
$pconfig['descr'] = isset($a_laggs[$id]['descr']) ? $a_laggs[$id]['descr'] : null;
|
||||
$pconfig['lacp_fast_timeout'] = !empty($a_laggs[$id]['lacp_fast_timeout']);
|
||||
$pconfig['mtu'] = isset($a_laggs[$id]['mtu']) ? $a_laggs[$id]['mtu'] : null;
|
||||
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
// validate and save form data
|
||||
if (!empty($a_laggs[$_POST['id']])) {
|
||||
@ -118,6 +119,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
if (!in_array($pconfig['proto'], $laggprotos)) {
|
||||
$input_errors[] = gettext("Protocol supplied is invalid");
|
||||
}
|
||||
if (!empty($pconfig['mtu']) && ($pconfig['mtu'] < 576 || $pconfig['mtu'] > 9000)) {
|
||||
$input_errors[] = gettext("The MTU must be greater than 576 bytes and less than 9000.");
|
||||
}
|
||||
|
||||
if (count($input_errors) == 0) {
|
||||
$lagg = array();
|
||||
@ -125,6 +129,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
|
||||
$lagg['descr'] = $pconfig['descr'];
|
||||
$lagg['laggif'] = $pconfig['laggif'];
|
||||
$lagg['proto'] = $pconfig['proto'];
|
||||
$lagg['mtu'] = $pconfig['mtu'];
|
||||
$lagg['lacp_fast_timeout'] = !empty($pconfig['lacp_fast_timeout']);
|
||||
if (isset($id)) {
|
||||
$lagg['laggif'] = $a_laggs[$id]['laggif'];
|
||||
@ -282,6 +287,15 @@ legacy_html_escape_form_data($pconfig);
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><a id="help_for_mtu" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext("MTU"); ?></td>
|
||||
<td>
|
||||
<input name="mtu" id="mtu" type="text" value="<?=$pconfig['mtu'];?>" />
|
||||
<div class="hidden" for="help_for_mtu">
|
||||
<?= gettext("If you leave this field blank, the smallest mtu of this laggs children will be used.");?>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td width="22%" valign="top"> </td>
|
||||
<td width="78%">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user