| 1791 | } |
| 1792 | |
| 1793 | static void |
| 1794 | pfsync_undefer(struct pfsync_deferral *pd, int drop) |
| 1795 | { |
| 1796 | struct pfsync_softc *sc = pd->pd_sc; |
| 1797 | struct mbuf *m = pd->pd_m; |
| 1798 | struct pf_state *st = pd->pd_st; |
| 1799 | struct pfsync_bucket *b = pfsync_get_bucket(sc, st); |
| 1800 | |
| 1801 | PFSYNC_BUCKET_LOCK_ASSERT(b); |
| 1802 | |
| 1803 | TAILQ_REMOVE(&b->b_deferrals, pd, pd_entry); |
| 1804 | b->b_deferred--; |
| 1805 | pd->pd_st->state_flags &= ~PFSTATE_ACK; /* XXX: locking! */ |
| 1806 | free(pd, M_PFSYNC); |
| 1807 | pf_release_state(st); |
| 1808 | |
| 1809 | if (drop) |
| 1810 | m_freem(m); |
| 1811 | else { |
| 1812 | _IF_ENQUEUE(&b->b_snd, m); |
| 1813 | pfsync_push(b); |
| 1814 | } |
| 1815 | } |
| 1816 | |
| 1817 | static void |
| 1818 | pfsync_defer_tmo(void *arg) |
no test coverage detected