summaryrefslogtreecommitdiffstats
path: root/etc
diff options
context:
space:
mode:
authorErmal Luçi <eri@pfsense.org>2008-11-05 21:00:32 +0000
committerErmal Luçi <eri@pfsense.org>2008-11-05 21:00:32 +0000
commitb64523c146437c3b3cf9b0f73ef1d3d9bd193698 (patch)
treef1f04b7ddee2db5f581f8a4988c6820b0814c8b2 /etc
parentdc97efafc488a61a85bc360056075bbb4d8e7f23 (diff)
downloadpfsense-b64523c146437c3b3cf9b0f73ef1d3d9bd193698.zip
pfsense-b64523c146437c3b3cf9b0f73ef1d3d9bd193698.tar.gz
Fix mtu handling on bridge and lagg interfaces. Reported-by: Seth
Diffstat (limited to 'etc')
-rw-r--r--etc/inc/interfaces.inc46
1 files changed, 30 insertions, 16 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc
index 5e0352d..c05fda5 100644
--- a/etc/inc/interfaces.inc
+++ b/etc/inc/interfaces.inc
@@ -145,6 +145,15 @@ function interface_bridge_configure(&$bridge)
} else
$bridgeif = exec("/sbin/ifconfig bridge create");
+ /* Calculate smaller mtu and enforce it */
+ $smallermtu = 1500;
+ foreach ($members as $member) {
+ $realif = get_real_interface($member);
+ $mtu = get_interface_mtu($realif);
+ if (!empty($mtu) && $mtu < $smallermtu)
+ $smallermtu = $mtu;
+ }
+
/* Add interfaces to bridge */
foreach ($members as $member) {
if (!array_key_exists($member, $checklist))
@@ -152,6 +161,7 @@ function interface_bridge_configure(&$bridge)
$realif = get_real_interface($member);
$realif = escapeshellarg($realif);
/* make sure the parent interface is up */
+ mwexec("/sbin/ifconfig {$realif} mtu {$smallermtu}");
mwexec("/sbin/ifconfig {$realif} up");
mwexec("/sbin/ifconfig {$bridgeif} addm {$realif}");
}
@@ -290,31 +300,35 @@ function interface_lagg_configure(&$lagg)
$checklist = get_interface_list();
+ if ($g['booting'] || !(empty($lagg['laggif']))) {
+ mwexec("/sbin/ifconfig {$lagg['laggif']} destroy");
+ mwexec("/sbin/ifconfig {$lagg['laggif']} create");
+ $laggif = $lagg['laggif'];
+ } else
+ $laggif = exec("/sbin/ifconfig lagg create");
+
+ mwexec("/sbin/ifconfig {$laggif} {$lagg['proto']}");
+
+ /* Calculate smaller mtu and enforce it */
+ $smallermtu = 1500;
+ foreach ($members as $member) {
+ $realif = get_real_interface($member);
+ $mtu = get_interface_mtu($realif);
+ if (!empty($mtu) && $mtu < $smallermtu)
+ $smallermtu = $mtu;
+ }
+
$cmd = "";
foreach ($members as $member) {
if (!array_key_exists($member, $checklist))
continue;
$realif = escapeshellarg($member);
- $mtu = get_interface_mtu($realif);
/* make sure the parent interface is up */
- mwexec("/sbin/ifconfig {$realif} mtu {$mtu}");
+ mwexec("/sbin/ifconfig {$realif} mtu {$smallermtu}");
mwexec("/sbin/ifconfig {$realif} up");
- $cmd .= " laggport {$realif}";
+ mwexec("/sbin/ifconfig {laggif} laggport {$realif}");
}
- if ($g['booting'] || !(empty($lagg['laggif']))) {
- mwexec("/sbin/ifconfig {$lagg['laggif']} destroy");
- mwexec("/sbin/ifconfig {$lagg['laggif']} create");
- $laggif = $lagg['laggif'];
- } else
- $laggif = exec("/sbin/ifconfig lagg create");
-
-
- mwexec("/sbin/ifconfig {$laggif} {$lagg['proto']}");
-
- /* Add interfaces to lagg */
- mwexec("/sbin/ifconfig {$laggif} {$cmd}");
-
mwexec("/sbin/ifconfig {$laggif} up");
return $laggif;
OpenPOWER on IntegriCloud