diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/etc/inc/filter.inc | 8 | ||||
-rw-r--r-- | src/usr/local/www/system_gateways_edit.php | 2 |
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( |