From 195cec19c43bd71d99ffc28d394944d56b6e6b1b Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Wed, 11 Jul 2018 11:46:08 +0200 Subject: [PATCH] system: do not use down / forced down for gateway switching PR: https://forum.opnsense.org/index.php?topic=9115.0 --- src/etc/inc/filter.inc | 6 +----- src/etc/inc/gwlb.inc | 13 +++++++++++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/etc/inc/filter.inc b/src/etc/inc/filter.inc index df7400837..5a19dff74 100644 --- a/src/etc/inc/filter.inc +++ b/src/etc/inc/filter.inc @@ -315,11 +315,7 @@ function filter_configure_sync($verbose = false, $flush_states = false) flush(); } - if (isset($config['system']['gw_switch_default'])) { - $gateways_status = return_gateways_status(true); - $gateways_arr = return_gateways_array(); - fixup_default_gateway($gateways_status, $gateways_arr); - } + fixup_default_gateway(); $aliases = filter_generate_aliases(); $aliases .= "\n# Plugins tables\n"; diff --git a/src/etc/inc/gwlb.inc b/src/etc/inc/gwlb.inc index efcd7b05f..3239927f1 100644 --- a/src/etc/inc/gwlb.inc +++ b/src/etc/inc/gwlb.inc @@ -864,8 +864,17 @@ function return_gateways_array($disabled = false, $localhost = false, $inactive return $gateways_arr; } -function fixup_default_gateway($gateways_status, $gateways_arr) +function fixup_default_gateway() { + global $config; + + if (!isset($config['system']['gw_switch_default'])) { + return; + } + + $gateways_status = return_gateways_status(true); + $gateways_arr = return_gateways_array(); + foreach (array("inet", "inet6") as $ipprotocol) { $dfltgwname = null; $dfltgwip = null; @@ -880,7 +889,7 @@ function fixup_default_gateway($gateways_status, $gateways_arr) /* wrong address family */ continue; } - if (!isset($gwsttng['monitoring_disabled']) && $gateways_status[$gwname]['status'] === 'down') { + if (strpos($gateways_status[$gwname]['status'], 'down') !== false) { /* cannot use down gateway */ continue; }