diff options
author | Ermal <eri@pfsense.org> | 2012-06-01 19:51:18 +0000 |
---|---|---|
committer | Ermal <eri@pfsense.org> | 2012-06-01 19:51:18 +0000 |
commit | 85a236e9dd5db87197ed6855995da609bf310bff (patch) | |
tree | 7ef1016f01b61c6a76c4d47f6bd28c1acc1bc964 /etc/inc/upgrade_config.inc | |
parent | 730b614846c740a1f8d501ca48bcc20198aeff84 (diff) | |
download | pfsense-85a236e9dd5db87197ed6855995da609bf310bff.zip pfsense-85a236e9dd5db87197ed6855995da609bf310bff.tar.gz |
Fixes #2428. Reference limiters in rules by name to avoid issues. Also put upgrade code for existing configs. The same fix is necessary for 2.0.x though not sure how this should be committed there.
Diffstat (limited to 'etc/inc/upgrade_config.inc')
-rw-r--r-- | etc/inc/upgrade_config.inc | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/etc/inc/upgrade_config.inc b/etc/inc/upgrade_config.inc index b42b837..45d6330 100644 --- a/etc/inc/upgrade_config.inc +++ b/etc/inc/upgrade_config.inc @@ -2818,4 +2818,44 @@ function upgrade_085_to_086() { } } +function upgrade_086_to_087() { + global $config, $dummynet_pipe_list; + + if (!is_array($config['filter']) || !is_array($config['filter']['rule'])) + return; + if (!is_array($config['dnshaper']) || !is_array($config['dnshaper']['queue'])) + return; + + $dnqueue_number = 1; + $dnpipe_number = 1; + + foreach ($config['dnshaper']['queue'] as $idx => $dnpipe) { + $config['dnshaper']['queue'][$idx]['number'] = $dnpipe_number; + $dnpipe_number++; + if (is_array($dnpipe['queue'])) { + foreach ($dnpipe['queue'] as $qidx => $dnqueue) { + $config['dnshaper']['queue'][$idx]['queue'][$qidx]['number'] = $dnqueue_number; + $dnqueue_number++; + } + } + } + + unset($dnqueue_number, $dnpipe_number, $qidx, $idx, $dnpipe, $dnqueue); + + require_once("shaper.inc"); + read_dummynet_config(); + + $dummynet_pipe_list = array_flip($dummynet_pipe_list); + foreach ($config['filter']['rule'] as $idx => $rule) { + if (!empty($rule['dnpipe'])) { + if (!empty($dummynet_pipe_list[$rule['dnpipe']])) + $config['filter']['rule'][$idx]['dnpipe'] = $dummynet_pipe_list[$rule['dnpipe']]; + } + if (!empty($rule['pdnpipe'])) { + if (!empty($dummynet_pipe_list[$rule['pdnpipe']])) + $config['filter']['rule'][$idx]['pdnpipe'] = $dummynet_pipe_list[$rule['pdnpipe']]; + } + } +} + ?> |