diff --git a/src/opnsense/mvc/app/library/OPNsense/Firewall/FilterRule.php b/src/opnsense/mvc/app/library/OPNsense/Firewall/FilterRule.php index 0a94dbc31..71e03ef5e 100644 --- a/src/opnsense/mvc/app/library/OPNsense/Firewall/FilterRule.php +++ b/src/opnsense/mvc/app/library/OPNsense/Firewall/FilterRule.php @@ -313,6 +313,11 @@ class FilterRule if (!empty($interface) && empty($this->interfaceMapping[$interface]['if'])) { $tmp['disabled'] = true; } + // disable rules when gateway is down and skip_rules_gw_down is set + if (!empty($tmp['skip_rules_gw_down']) && !empty($tmp['gateway']) && + empty($this->gatewayMapping[$tmp['gateway']])) { + $tmp['disabled'] = true; + } if (!isset($tmp['quick'])) { // all rules are quick by default except floating $tmp['quick'] = !isset($rule['floating']) ? true : false; diff --git a/src/opnsense/mvc/app/library/OPNsense/Firewall/Plugin.php b/src/opnsense/mvc/app/library/OPNsense/Firewall/Plugin.php index 7f2e32d00..447d6cb0e 100644 --- a/src/opnsense/mvc/app/library/OPNsense/Firewall/Plugin.php +++ b/src/opnsense/mvc/app/library/OPNsense/Firewall/Plugin.php @@ -51,6 +51,9 @@ class Plugin if (!empty(Config::getInstance()->object()->system->disablereplyto)) { $this->systemDefaults['disablereplyto'] = true; } + if (!empty(Config::getInstance()->object()->system->skip_rules_gw_down)) { + $this->systemDefaults['skip_rules_gw_down'] = true; + } } /**