Bug #9887 » 9887.patch
src/usr/local/pfSense/include/www/firewall_nat.inc | ||
---|---|---|
766 | 766 |
init_config_arr(array('nat', 'separator')); |
767 | 767 |
$a_separators = &$config['nat']['separator']; |
768 | 768 | |
769 |
$first_idx = 0; |
|
770 | 769 |
$num_deleted = 0; |
771 | 770 | |
772 | 771 |
foreach ($post['rule'] as $rulei) { |
... | ... | |
780 | 779 | |
781 | 780 |
unset($a_nat[$rulei]); |
782 | 781 | |
783 |
// Capture first changed filter index for later separator shifting |
|
784 |
if (!$first_idx) { |
|
785 |
$first_idx = $rulei; |
|
782 |
// Update the separators |
|
783 |
// As rules are deleted, $ridx has to be decremented or separator position will break |
|
784 |
if (count($post['rule']) == 1) { // Need special handling of single rule deletion |
|
785 |
$ridx = $rulei; |
|
786 |
} else { |
|
787 |
$ridx = $rulei - $num_deleted; |
|
786 | 788 |
} |
787 | 789 | |
790 |
$mvnrows = -1; |
|
791 |
move_separators($a_separators, $ridx, $mvnrows); |
|
792 | ||
788 | 793 |
$num_deleted++; |
789 | 794 |
} |
790 | 795 | |
791 | 796 |
if ($num_deleted) { |
792 |
move_separators($a_separators, $first_idx, -$num_deleted); |
|
793 | 797 |
if (write_config("NAT: Rule deleted")) { |
794 | 798 |
if ($json) { |
795 | 799 |
filter_configure(); |
src/usr/local/www/firewall_rules.php | ||
---|---|---|
199 | 199 |
init_config_arr(array('filter', 'separator', strtolower($if))); |
200 | 200 |
$a_separators = &$config['filter']['separator'][strtolower($if)]; |
201 | 201 | |
202 |
$first_idx = 0; |
|
203 | 202 |
$num_deleted = 0; |
203 | ||
204 | 204 |
foreach ($_POST['rule'] as $rulei) { |
205 | 205 |
delete_nat_association($a_filter[$rulei]['associated-rule-id']); |
206 | 206 |
unset($a_filter[$rulei]); |
207 | 207 | |
208 |
// Capture first changed filter index for later separator shifting |
|
209 |
if (!$first_idx) $first_idx = ifridx($if, $rulei); |
|
208 |
// Update the separators |
|
209 |
// As rules are deleted, $ridx has to be decremented or separator position will break |
|
210 |
if (count($_POST['rule']) == 1) { // Need special handling of single rule deletion |
|
211 |
$ridx = ifridx($if, $rulei); |
|
212 |
} else { |
|
213 |
$ridx = ifridx($if, $rulei) - $num_deleted + 1; |
|
214 |
} |
|
215 | ||
216 |
$mvnrows = -1; |
|
217 |
move_separators($a_separators, $ridx, $mvnrows); |
|
218 | ||
210 | 219 |
$num_deleted++; |
211 | 220 |
} |
212 | 221 | |
213 | 222 |
if ($num_deleted) { |
214 |
move_separators($a_separators, $first_idx, -$num_deleted); |
|
215 | 223 |
if (write_config(gettext("Firewall: Rules - deleted selected firewall rules."))) { |
216 | 224 |
mark_subsystem_dirty('filter'); |
217 | 225 |
} |