Revision 19d91466
Added by Ermal LUÇI over 14 years ago
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
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.