diff options
author | Stephen Beaver <sbeaver@netgate.com> | 2015-12-01 07:43:21 -0500 |
---|---|---|
committer | Stephen Beaver <sbeaver@netgate.com> | 2015-12-01 07:43:21 -0500 |
commit | 1d94735c803d2e0ccf241baab45ccde08f5fe90e (patch) | |
tree | 59c9451598fa7562731edbb0b50effd46833cc6e /src | |
parent | ca47c065d4a197b24c6dcd8700ca1fd195a4d719 (diff) | |
parent | e75f0e7d9d7d0c7646b03fe2b4b7b5fae3856f86 (diff) | |
download | pfsense-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.php | 9 | ||||
-rw-r--r-- | src/usr/local/www/system_gateways_edit.php | 10 |
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']) { |