summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/system_gateways.php
diff options
context:
space:
mode:
authorPiBa-NL <pba_2k3@yahoo.com>2015-11-26 21:05:46 +0100
committerPiBa-NL <pba_2k3@yahoo.com>2015-11-26 21:05:46 +0100
commite75f0e7d9d7d0c7646b03fe2b4b7b5fae3856f86 (patch)
treec00ba0faf1b29806260432af1bf0f17638dbb18d /src/usr/local/www/system_gateways.php
parentde34f1fc12f29db0348f8ff9b1bc8300d9fb74d2 (diff)
downloadpfsense-e75f0e7d9d7d0c7646b03fe2b4b7b5fae3856f86.zip
pfsense-e75f0e7d9d7d0c7646b03fe2b4b7b5fae3856f86.tar.gz
cleanup static routes for interface nonlocal gateways when being deleted or changed.
Diffstat (limited to 'src/usr/local/www/system_gateways.php')
-rw-r--r--src/usr/local/www/system_gateways.php9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/usr/local/www/system_gateways.php b/src/usr/local/www/system_gateways.php
index f05816c..5223a20 100644
--- a/src/usr/local/www/system_gateways.php
+++ b/src/usr/local/www/system_gateways.php
@@ -155,6 +155,15 @@ function delete_gateway_item($id) {
return;
}
+ /* NOTE: Cleanup static routes for the interface route if any */
+ if (!empty($a_gateways[$id]) && is_ipaddr($a_gateways[$id]['gateway']) &&
+ $gateway['gateway'] != $a_gateways[$id]['gateway'] &&
+ isset($a_gateways[$id]["nonlocalgateway"])) {
+ $realif = get_real_interface($a_gateways[$id]['interface']);
+ $inet = (!is_ipaddrv4($a_gateways[$id]['gateway']) ? "-inet6" : "-inet");
+ $cmd = "/sbin/route delete $inet " . escapeshellarg($a_gateways[$id]['gateway']) . " -iface " . escapeshellarg($realif);
+ mwexec($cmd);
+ }
/* NOTE: Cleanup static routes for the monitor ip if any */
if (!empty($a_gateways[$id]['monitor']) &&
$a_gateways[$id]['monitor'] != "dynamic" &&
OpenPOWER on IntegriCloud