mirror of
https://github.com/opnsense/src.git
synced 2026-04-10 11:58:54 -04:00
pf_purge_thread() breaks up the work of iterating all states (in pf_purge_expired_states()) and tracks progress in the idx variable. If multiple vnets exist this results in pf_purge_thread() only calling pf_purge_expired_states() for part of the states (the first part of the first vnet, second part of the second vnet and so on). Combined with the mark-and-sweep approach to cleaning up old rules (in V_pf_unlinked_rules) that resulted in pf freeing rules that were still referenced by states. This in turn caused panics when pf_state_expires() encounters that state and attempts to access the rule. We need to track the progress per vnet, not globally, so idx is moved into a per-vnet V_pf_purge_idx. PR: 219251 Sponsored by: Hackathon Essen 2017 |
||
|---|---|---|
| .. | ||
| if_pflog.c | ||
| if_pfsync.c | ||
| in4_cksum.c | ||
| pf.c | ||
| pf.h | ||
| pf_altq.h | ||
| pf_if.c | ||
| pf_ioctl.c | ||
| pf_lb.c | ||
| pf_mtag.h | ||
| pf_norm.c | ||
| pf_osfp.c | ||
| pf_ruleset.c | ||
| pf_table.c | ||