From 621fed0e0fb098fc4cf277a1a59252b3fef50cf5 Mon Sep 17 00:00:00 2001 From: Ermal Date: Sat, 18 Oct 2014 01:33:42 +0200 Subject: Ticket #3932 For more than 100 entries create pipes in line with the rules file to speedup the process --- etc/inc/captiveportal.inc | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'etc/inc') diff --git a/etc/inc/captiveportal.inc b/etc/inc/captiveportal.inc index 000db23..a5029a5 100644 --- a/etc/inc/captiveportal.inc +++ b/etc/inc/captiveportal.inc @@ -937,7 +937,7 @@ function captiveportal_radius_stop_all() { } } -function captiveportal_passthrumac_configure_entry($macent) { +function captiveportal_passthrumac_configure_entry($macent, $pipeinrule = false) { global $config, $g, $cpzone; $bwUp = 0; @@ -954,14 +954,22 @@ function captiveportal_passthrumac_configure_entry($macent) { $ruleno = captiveportal_get_next_ipfw_ruleno(); if ($macent['action'] == 'pass') { + $rules = ""; $pipeno = captiveportal_get_next_dn_ruleno(); $pipeup = $pipeno; - $_gb = @pfSense_pipe_action("pipe {$pipeno} config bw {$bwUp}Kbit/s queue 100 buckets 16"); + if ($pipeinrule == true) + $_gb = @pfSense_pipe_action("pipe {$pipeno} config bw {$bwUp}Kbit/s queue 100 buckets 16"); + else + $rules .= "pipe {$pipeno} config bw {$bwUp}Kbit/s queue 100 buckets 16\n"; + $pipedown = $pipeno + 1; - $_gb = @pfSense_pipe_action("pipe {$pipedown} config bw {$bwDown}Kbit/s queue 100 buckets 16"); + if ($pipeinrule == true) + $_gb = @pfSense_pipe_action("pipe {$pipedown} config bw {$bwDown}Kbit/s queue 100 buckets 16"); + else + $rules .= "pipe {$pipedown} config bw {$bwDown}Kbit/s queue 100 buckets 16\n"; - $rules = "add {$ruleno} pipe {$pipeup} ip from any to any MAC any {$macent['mac']}\n"; + $rules .= "add {$ruleno} pipe {$pipeup} ip from any to any MAC any {$macent['mac']}\n"; $ruleno++; $rules .= "add {$ruleno} pipe {$pipedown} ip from any to any MAC {$macent['mac']} any\n"; } @@ -1000,9 +1008,15 @@ function captiveportal_passthrumac_configure($lock = false) { $rules = ""; - if (is_array($config['captiveportal'][$cpzone]['passthrumac'])) - foreach ($config['captiveportal'][$cpzone]['passthrumac'] as $macent) - $rules .= captiveportal_passthrumac_configure_entry($macent); + if (is_array($config['captiveportal'][$cpzone]['passthrumac'])) { + $nentries = count($config['captiveportal'][$cpzone]['passthrumac']); + foreach ($config['captiveportal'][$cpzone]['passthrumac'] as $macent) { + if ($nentries > 100) + $rules .= captiveportal_passthrumac_configure_entry($macent, true); + else + $rules .= captiveportal_passthrumac_configure_entry($macent); + } + } return $rules; } -- cgit v1.1