diff options
Diffstat (limited to 'usr/local/www/services_proxyarp_edit.php')
-rwxr-xr-x | usr/local/www/services_proxyarp_edit.php | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/usr/local/www/services_proxyarp_edit.php b/usr/local/www/services_proxyarp_edit.php index b24f4b9..0e93924 100755 --- a/usr/local/www/services_proxyarp_edit.php +++ b/usr/local/www/services_proxyarp_edit.php @@ -36,6 +36,30 @@ ##|*MATCH=services_proxyarp_edit.php* ##|-PRIV +function proxyarp_sort() { + global $g, $config; + + function proxyarpcmp($a, $b) { + if (isset($a['network'])) + list($ast,$asn) = explode("/", $a['network']); + else if (isset($a['range'])) { + $ast = $a['range']['from']; + $asn = 32; + } + if (isset($b['network'])) + list($bst,$bsn) = explode("/", $b['network']); + else if (isset($b['range'])) { + $bst = $b['range']['from']; + $bsn = 32; + } + if (ipcmp($ast, $bst) == 0) + return ($asn - $bsn); + else + return ipcmp($ast, $bst); + } + + usort($config['proxyarp']['proxyarpnet'], "proxyarpcmp"); +} require("guiconfig.inc"); @@ -125,6 +149,7 @@ if ($_POST) { $arpent['network'] = $_POST['subnet'] . "/" . $_POST['subnet_bits']; $arpent['descr'] = $_POST['descr']; + proxyarp_sort(); if (isset($id) && $a_proxyarp[$id]) $a_proxyarp[$id] = $arpent; else |