Bug #8555 » pfsense.patch
src/etc/inc/filter.inc | ||
---|---|---|
194 | 194 |
} |
195 | 195 | |
196 | 196 |
function filter_delete_states_for_down_gateways() { |
197 |
global $config, $GatewaysList;
|
|
197 |
global $config; |
|
198 | 198 | |
199 | 199 |
if (!isset($config['system']['gw_down_kill_states'])) { |
200 | 200 |
return; |
201 | 201 |
} |
202 | 202 | |
203 |
$any_gateway_down = false; |
|
204 | 203 |
$a_gateways = return_gateways_status(); |
205 |
if (is_array($GatewaysList)) { |
|
206 |
foreach ($GatewaysList as $gwname => $gateway) { |
|
207 |
if (empty($gateway['monitor'])) { |
|
208 |
continue; |
|
209 |
} |
|
210 |
if (!is_ipaddr($gateway['monitor'])) { |
|
211 |
continue; |
|
212 |
} |
|
213 |
if (strstr($gateway['monitor'], "127.0.0.")) { |
|
214 |
continue; |
|
215 |
} |
|
216 |
if (empty($a_gateways[$gateway['monitor']])) { |
|
217 |
continue; |
|
218 |
} |
|
219 |
$gwstatus =& $a_gateways[$gateway['monitor']]; |
|
220 |
if (strstr($gwstatus['status'], "down")) { |
|
221 |
$any_gateway_down = true; |
|
222 |
break; |
|
204 |
$gateways = return_gateways_array(); |
|
205 | ||
206 |
foreach($a_gateways as $gwip => $gateway) { |
|
207 |
if (is_ipaddr($gwip) && ($gateway['status'] == 'down' || $gateway['status'] == 'force_down')) { |
|
208 |
log_error("Killing states for down gateway {$gateway['name']} ({$gwip})"); |
|
209 |
$output = array(); |
|
210 |
exec("/sbin/pfctl -M -k gateway -k {$gwip} 2>&1", $output); |
|
211 |
if (is_array($output) && isset($output[0])) { |
|
212 |
log_error($output[0]); |
|
223 | 213 |
} |
224 | 214 |
} |
225 | 215 |
} |
226 |
if ($any_gateway_down == true) { |
|
227 |
mwexec("/sbin/pfctl -Fs"); |
|
228 |
} |
|
229 | 216 |
} |
230 | 217 | |
231 | 218 |
/* reload filter sync */ |
- « Previous
- 1
- 2
- 3
- 4
- Next »