summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorStephen Beaver <sbeaver@netgate.com>2015-12-01 07:43:21 -0500
committerStephen Beaver <sbeaver@netgate.com>2015-12-01 07:43:21 -0500
commit1d94735c803d2e0ccf241baab45ccde08f5fe90e (patch)
tree59c9451598fa7562731edbb0b50effd46833cc6e /src
parentca47c065d4a197b24c6dcd8700ca1fd195a4d719 (diff)
parente75f0e7d9d7d0c7646b03fe2b4b7b5fae3856f86 (diff)
downloadpfsense-1d94735c803d2e0ccf241baab45ccde08f5fe90e.zip
pfsense-1d94735c803d2e0ccf241baab45ccde08f5fe90e.tar.gz
Merge pull request #2125 from PiBa-NL/gateway_interface_route_2.3
Diffstat (limited to 'src')
-rw-r--r--src/usr/local/www/system_gateways.php9
-rw-r--r--src/usr/local/www/system_gateways_edit.php10
2 files changed, 19 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" &&
diff --git a/src/usr/local/www/system_gateways_edit.php b/src/usr/local/www/system_gateways_edit.php
index d29c134..b5068d6 100644
--- a/src/usr/local/www/system_gateways_edit.php
+++ b/src/usr/local/www/system_gateways_edit.php
@@ -526,6 +526,16 @@ if ($_POST) {
$gateway['monitor'] = $_POST['monitor'];
}
+ /* NOTE: If gateway ip is changed need to cleanup the old static interface route */
+ if ($_POST['monitor'] != "dynamic" && !empty($a_gateway_item[$realid]) && is_ipaddr($a_gateway_item[$realid]['gateway']) &&
+ $gateway['gateway'] != $a_gateway_item[$realid]['gateway'] &&
+ isset($a_gateway_item[$realid]["nonlocalgateway"])) {
+ $realif = get_real_interface($a_gateway_item[$realid]['interface']);
+ $inet = (!is_ipaddrv4($a_gateway_item[$realid]['gateway']) ? "-inet6" : "-inet");
+ $cmd = "/sbin/route delete $inet " . escapeshellarg($a_gateway_item[$realid]['gateway']) . " -iface " . escapeshellarg($realif);
+ mwexec($cmd);
+ }
+
/* NOTE: If monitor ip is changed need to cleanup the old static route */
if ($_POST['monitor'] != "dynamic" && !empty($a_gateway_item[$realid]) && is_ipaddr($a_gateway_item[$realid]['monitor']) &&
$_POST['monitor'] != $a_gateway_item[$realid]['monitor'] && $gateway['gateway'] != $a_gateway_item[$realid]['monitor']) {
OpenPOWER on IntegriCloud