Project

General

Profile

« Previous | Next » 

Revision 19d91466

Added by Ermal LUÇI over 14 years ago

Another sweep at keeping the default route always present when the default setup route is marked as down. This now adds checks for configuration where a defaultgw is not specified by the user but deduced automatically.

View differences:

etc/inc/gwlb.inc
373 373
	 */
374 374
	$upgw = "";
375 375
	$dfltgwdown = false;
376
	$dfltgwfound = false;
376 377
	foreach ($gateways_arr as $gwname => $gwsttng) {
377
		if ($gwsttng['defaultgw'] == true && stristr($gateways_status[$gwname]['status'], "down"))
378
			$dfltgwdown = true;
378
		if (isset($gwsttng['defaultgw'])) {
379
			$dfltgwfound = true;
380
			if (stristr($gateways_status[$gwname]['status'], "down"))
381
				$dfltgwdown = true;
382
		}
379 383
		/* Keep a record of the last up gateway */
380 384
		if (empty($upgw) && !stristr($gateways_status[$gwname]['status'], "down"))
381 385
			$upgw = $gwname;
382
		if ($dfltgwdown == true && !empty($upgw)) {
383
			if ($gateways_arr[$upgw]['gateway'] == "dynamic")
384
				$gateways_arr[$upgw]['gateway'] = get_interface_gateway($gateways_arr[$upgw]['friendlyiface']);
385
			if (is_ipaddr($gateways_arr[$upgw]['gateway'])) {
386
				log_error("Default gateway down setting {$upgw} as default!");
387
				mwexec("/sbin/route delete -inet default; /sbin/route add -inet default {$gateways_arr[$upgw]['gateway']}");
388
			}
386
		if ($dfltgwdown == true && !empty($upgw))
389 387
			break;
388
	}
389
	if ($dfltgwfound == false) {
390
		$gwname = convert_friendly_interface_to_friendly_descr("wan");
391
		if (stristr($gateways_status[$gwname]['status'], "down"))
392
			$dfltgwdown = true;
393
	}
394
	if ($dfltgwdown == true && !empty($upgw)) {
395
		if ($gateways_arr[$upgw]['gateway'] == "dynamic")
396
			$gateways_arr[$upgw]['gateway'] = get_interface_gateway($gateways_arr[$upgw]['friendlyiface']);
397
		if (is_ipaddr($gateways_arr[$upgw]['gateway'])) {
398
			log_error("Default gateway down setting {$upgw} as default!");
399
			mwexec("/sbin/route delete -inet default; /sbin/route add -inet default {$gateways_arr[$upgw]['gateway']}");
390 400
		}
391 401
	}
392
	unset($upgw, $dfltgwdown, $gwname, $gwsttng);
402
	unset($upgw, $dfltgwfound, $dfltgwdown, $gwname, $gwsttng);
393 403

  
394 404
	if (is_array($config['gateways']['gateway_group'])) {
395 405
		foreach($config['gateways']['gateway_group'] as $group) {

Also available in: Unified diff