summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorChris Buechler <cmb@pfsense.org>2016-02-04 15:37:13 -0600
committerChris Buechler <cmb@pfsense.org>2016-02-04 15:38:13 -0600
commitd46049e1540fae78cc1a5929bdb7e84cf3a46dd0 (patch)
treef6b15aac155dfe8008e179e6a2a28f4af705ad09 /src
parent00de7de690df0beb8fff755518890878c1c7e41c (diff)
downloadpfsense-d46049e1540fae78cc1a5929bdb7e84cf3a46dd0.zip
pfsense-d46049e1540fae78cc1a5929bdb7e84cf3a46dd0.tar.gz
Allow gateway weights up to 30, and add a check in filter.inc to prevent creating too long of a route-to line. Related to pull request 1614
Diffstat (limited to 'src')
-rw-r--r--src/etc/inc/filter.inc8
-rw-r--r--src/usr/local/www/system_gateways_edit.php2
2 files changed, 9 insertions, 1 deletions
diff --git a/src/etc/inc/filter.inc b/src/etc/inc/filter.inc
index 69ddc36..efa0d09 100644
--- a/src/etc/inc/filter.inc
+++ b/src/etc/inc/filter.inc
@@ -907,6 +907,7 @@ function filter_generate_gateways() {
if (count($members) > 0) {
$foundlb = 0;
$routeto = "";
+ $routetomembers = 0;
foreach ($members as $idx => $member) {
$int = $member['int'];
$gatewayip = $member['gwip'];
@@ -914,10 +915,17 @@ function filter_generate_gateways() {
if ($g['debug']) {
log_error(sprintf(gettext('Setting up route with %1$s on %2$s'), $gatewayip, $int));
}
+ if ($routetomembers + $member['weight'] > 384) {
+ // would create invalid ruleset, bail
+ log_error(sprintf(gettext("Too many members in group %s, gateway group truncated in ruleset."), $member['name']));
+ continue;
+ }
if ($member['weight'] > 1) {
$routeto .= str_repeat("( {$int} {$gatewayip} ) ", $member['weight']);
+ $routetomembers += $member['weight'];
} else {
$routeto .= "( {$int} {$gatewayip} ) ";
+ $routetomembers++;
}
$foundlb++;
} else {
diff --git a/src/usr/local/www/system_gateways_edit.php b/src/usr/local/www/system_gateways_edit.php
index a926190..f6b3c2a 100644
--- a/src/usr/local/www/system_gateways_edit.php
+++ b/src/usr/local/www/system_gateways_edit.php
@@ -806,7 +806,7 @@ $section->addInput(new Form_Select(
'weight',
'Weight',
$pconfig['weight'],
- array_combine(range(1, 5), range(1, 5))
+ array_combine(range(1, 30), range(1, 30))
))->setHelp('Weight for this gateway when used in a Gateway Group.');
$section->addInput(new Form_Input(
OpenPOWER on IntegriCloud