Skip to content
  • Andrey V. Elsukov's avatar
    Restore the ability to keep states after parent rule deletion. · 67ad3c0b
    Andrey V. Elsukov authored
    This feature is disabled by default and was removed when dynamic states
    implementation changed to be lockless. Now it is reimplemented with small
    differences - when dyn_keep_states sysctl variable is enabled,
    dyn_match_ipv[46]_state() function doesn't match child states of deleted
    rule. And thus they are keept alive until expired. ipfw_dyn_lookup_state()
    function does check that state was not orphaned, and if so, it returns
    pointer to default_rule and its position in the rules map. The main visible
    difference is that orphaned states still have the same rule number that
    they have before parent rule deleted, because now a state has many fields
    related to rule and changing them all atomically to point to default_rule
    seems hard enough.
    
    Reported by:	<lantw44 at gmail.com>
    MFC after:	2 days
    67ad3c0b