Project

General

Profile

« Previous | Next » 

Revision 1be1b87b

Added by Jim Pingle almost 9 years ago

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

View differences:

src/usr/local/www/system_gateways.php
119 119
		return;
120 120
	}
121 121

  
122
	/* If the removed gateway was the default route, remove the default route */
123
	if (!empty($a_gateways[$id]) && is_ipaddr($a_gateways[$id]['gateway']) &&
124
	    !isset($a_gateways[$id]['disabled']) &&
125
	    isset($a_gateways[$id]['defaultgw'])) {
126
		$inet = (!is_ipaddrv4($a_gateways[$id]['gateway']) ? '-inet6' : '-inet');
127
		mwexec("/sbin/route delete {$inet} default");
128
	}
129

  
122 130
	/* NOTE: Cleanup static routes for the interface route if any */
123 131
	if (!empty($a_gateways[$id]) && is_ipaddr($a_gateways[$id]['gateway']) &&
124 132
	    $gateway['gateway'] != $a_gateways[$id]['gateway'] &&
......
195 203
	if ($ok_to_toggle) {
196 204
		if ($disable_gw) {
197 205
			$a_gateway_item[$realid]['disabled'] = true;
206
			/* If the disabled gateway was the default route, remove the default route */
207
			if (!empty($a_gateway_item[$realid]) && is_ipaddr($a_gateway_item[$realid]['gateway']) &&
208
			    isset($a_gateway_item[$realid]['defaultgw'])) {
209
				$inet = (!is_ipaddrv4($a_gateway_item[$realid]['gateway']) ? '-inet6' : '-inet');
210
				mwexec("/sbin/route delete {$inet} default");
211
			}
198 212
		} else {
199 213
			unset($a_gateway_item[$realid]['disabled']);
200 214
		}
src/usr/local/www/system_gateways_edit.php
494 494

  
495 495
		if (isset($_POST['disabled'])) {
496 496
			$gateway['disabled'] = true;
497
			/* Check if the gateway was enabled but changed to disabled. */
498
			if ((isset($realid) && $a_gateway_item[$realid]) && ($pconfig['disabled'] == false)) {
499
				/*  If the disabled gateway was the default route, remove the default route */
500
				if (is_ipaddr($gateway['gateway']) &&
501
				    isset($gateway['defaultgw'])) {
502
					$inet = (!is_ipaddrv4($gateway['gateway']) ? '-inet6' : '-inet');
503
					mwexec("/sbin/route delete {$inet} default");
504
				}
505
			}
497 506
		} else {
498 507
			unset($gateway['disabled']);
499 508
		}

Also available in: Unified diff