summaryrefslogtreecommitdiffstats
path: root/usr/local/www/guiconfig.inc
diff options
context:
space:
mode:
authorErik Fonnesbeck <efonnes@gmail.com>2010-11-10 22:03:07 -0700
committerErik Fonnesbeck <efonnes@gmail.com>2010-11-10 22:43:08 -0700
commit88bc276013552268ebef7058cd7b58c89de67125 (patch)
tree5f496839e6dd01a9ece86526e869ac446568c114 /usr/local/www/guiconfig.inc
parentea57ccb86b5c75246dabb8306c35b997cb4ede9d (diff)
downloadpfsense-88bc276013552268ebef7058cd7b58c89de67125.zip
pfsense-88bc276013552268ebef7058cd7b58c89de67125.tar.gz
Fix filter_rules_sort's compare function to know about floating rules so it won't change their order.
Diffstat (limited to 'usr/local/www/guiconfig.inc')
-rwxr-xr-xusr/local/www/guiconfig.inc19
1 files changed, 11 insertions, 8 deletions
diff --git a/usr/local/www/guiconfig.inc b/usr/local/www/guiconfig.inc
index 4c68a32..d1a92c7 100755
--- a/usr/local/www/guiconfig.inc
+++ b/usr/local/www/guiconfig.inc
@@ -464,19 +464,22 @@ function filter_rules_sort() {
for ($i = 0; isset($config['filter']['rule'][$i]); $i++)
$config['filter']['rule'][$i]['seq'] = $i;
- function filtercmp($a, $b) {
- if ($a['interface'] == $b['interface'])
- return $a['seq'] - $b['seq'];
- else
- return -strcmp($a['interface'], $b['interface']);
- }
-
- usort($config['filter']['rule'], "filtercmp");
+ usort($config['filter']['rule'], "filter_rules_compare");
/* strip the sequence numbers again */
for ($i = 0; isset($config['filter']['rule'][$i]); $i++)
unset($config['filter']['rule'][$i]['seq']);
}
+function filter_rules_compare($a, $b) {
+ if ($a['interface'] == $b['interface'] || ( isset($a['floating']) && isset($b['floating']) ))
+ return $a['seq'] - $b['seq'];
+ else if (isset($a['floating']))
+ return -1;
+ else if (isset($b['floating']))
+ return 1;
+ else
+ return compare_interface_friendly_names($a['interface'], $b['interface']);
+}
function firewall_check_for_advanced_options(&$item) {
$item_set = "";
OpenPOWER on IntegriCloud