diff options
author | PiBa-NL <pba_2k3@yahoo.com> | 2015-11-26 21:05:46 +0100 |
---|---|---|
committer | PiBa-NL <pba_2k3@yahoo.com> | 2015-11-26 21:05:46 +0100 |
commit | e75f0e7d9d7d0c7646b03fe2b4b7b5fae3856f86 (patch) | |
tree | c00ba0faf1b29806260432af1bf0f17638dbb18d /src/usr/local/www/system_gateways.php | |
parent | de34f1fc12f29db0348f8ff9b1bc8300d9fb74d2 (diff) | |
download | pfsense-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.php | 9 |
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" && |