summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/system_gateways.php
diff options
context:
space:
mode:
authorjim-p <jimp@pfsense.org>2016-11-04 14:06:01 -0400
committerjim-p <jimp@pfsense.org>2016-11-04 14:06:53 -0400
commit1be1b87b5f9ab8d0a259b888aab08ec6babad568 (patch)
treeb8b7add53a02560faffbf7a4cdde05022eb70de6 /src/usr/local/www/system_gateways.php
parentf92d44da5a4958372c7fb925043abc34588143e3 (diff)
downloadpfsense-1be1b87b5f9ab8d0a259b888aab08ec6babad568.zip
pfsense-1be1b87b5f9ab8d0a259b888aab08ec6babad568.tar.gz
When deleting or disabling a non-dynamic gateway, if that gateway was set as default then remove the corresponding default route to respect the user's decision. Fixes #6659
Diffstat (limited to 'src/usr/local/www/system_gateways.php')
-rw-r--r--src/usr/local/www/system_gateways.php14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/usr/local/www/system_gateways.php b/src/usr/local/www/system_gateways.php
index 1da123d..9eb95de 100644
--- a/src/usr/local/www/system_gateways.php
+++ b/src/usr/local/www/system_gateways.php
@@ -119,6 +119,14 @@ function delete_gateway_item($id) {
return;
}
+ /* If the removed gateway was the default route, remove the default route */
+ if (!empty($a_gateways[$id]) && is_ipaddr($a_gateways[$id]['gateway']) &&
+ !isset($a_gateways[$id]['disabled']) &&
+ isset($a_gateways[$id]['defaultgw'])) {
+ $inet = (!is_ipaddrv4($a_gateways[$id]['gateway']) ? '-inet6' : '-inet');
+ mwexec("/sbin/route delete {$inet} default");
+ }
+
/* 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'] &&
@@ -195,6 +203,12 @@ if (isset($_POST['del_x'])) {
if ($ok_to_toggle) {
if ($disable_gw) {
$a_gateway_item[$realid]['disabled'] = true;
+ /* If the disabled gateway was the default route, remove the default route */
+ if (!empty($a_gateway_item[$realid]) && is_ipaddr($a_gateway_item[$realid]['gateway']) &&
+ isset($a_gateway_item[$realid]['defaultgw'])) {
+ $inet = (!is_ipaddrv4($a_gateway_item[$realid]['gateway']) ? '-inet6' : '-inet');
+ mwexec("/sbin/route delete {$inet} default");
+ }
} else {
unset($a_gateway_item[$realid]['disabled']);
}
OpenPOWER on IntegriCloud