ipfw: use SLIST_REMOVE_HEAD and SLIST_REMOVE_AFTER for the first and subsequent respective states when freeing expired dynamic states.
This is done with a previous pointer, which is used by SLIST_REMOVE_AFTER on subsequent states to prevent re-iterating the state table for expired entries. On the first entry, SLIST_REMOVE_HEAD is used as prev would be null.
Submitted by: Neel Chauhan <neel AT neelc DOT org>