diff options
author | Renato Botelho <renato.botelho@bluepex.com> | 2010-08-23 12:50:21 -0300 |
---|---|---|
committer | Renato Botelho <renato.botelho@bluepex.com> | 2010-08-23 12:50:21 -0300 |
commit | 02226b924f58b216b8771d65717d8d3d6b457d76 (patch) | |
tree | aac2474d36b86fac61cfff9a4fef98e86816d82a /etc/inc/filter.inc | |
parent | a8cc4ac70e1018f4ce146c909f1e81f2562eef47 (diff) | |
parent | 25a2bf77d77de2ad0f5a9f3c9daf18b88e90b844 (diff) | |
download | pfsense-02226b924f58b216b8771d65717d8d3d6b457d76.zip pfsense-02226b924f58b216b8771d65717d8d3d6b457d76.tar.gz |
Merge remote branch 'mainline/master' into inc
Conflicts:
etc/inc/config.lib.inc
Diffstat (limited to 'etc/inc/filter.inc')
-rw-r--r-- | etc/inc/filter.inc | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/etc/inc/filter.inc b/etc/inc/filter.inc index 4371aec..aa3fff5 100644 --- a/etc/inc/filter.inc +++ b/etc/inc/filter.inc @@ -141,13 +141,30 @@ function filter_configure() { } function filter_delete_states_for_down_gateways() { - global $config; + global $config, $GatewaysList; $a_gateways = return_gateways_status(); - foreach ($a_gateways as $gwip => $gateway) { - if (stristr($status['status'], "down")) { - if (is_ipaddr($gateway['srcip']) && is_ipaddr($gwip)) { - mwexec("/sbin/pfctl -b {$gateway['srcip']} -b {$gwip}"); + if (is_array($GatewaysList)) { + foreach ($GatewaysList as $gwname => $gateway) { + if (empty($gateway['monitor'])) + continue; + if (!is_ipaddr($gateway['monitor'])) + continue; + if (strstr($gateway['monitor'], "127.0.0.")) + continue; + if (empty($a_gateways[$gateway['monitor']])) + continue; + $gwstatus =& $a_gateways[$gateway['monitor']]; + if (strstr($gwstatus['status'], "down")) { + $gwip = $gateway['gateway']; + if (!is_ipaddr($gwip)) + $gwip = get_interface_gateway($gateway['friendlyiface']); + if (is_ipaddr($gwstatus['srcip'])) { + $cmd = "/sbin/pfctl -b {$gateway['srcip']} "; + if (is_ipaddr($gwip)) + $cmd .= "-b {$gwip}"; + mwexec($cmd); + } } } } |