MCPcopy Create free account
hub / github.com/F-Stack/f-stack / pfr_setflags_ktable

Function pfr_setflags_ktable

freebsd/netpfil/pf/pf_table.c:1816–1849  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1814}
1815
1816static void
1817pfr_setflags_ktable(struct pfr_ktable *kt, int newf)
1818{
1819 struct pfr_kentryworkq addrq;
1820
1821 PF_RULES_WASSERT();
1822
1823 if (!(newf & PFR_TFLAG_REFERENCED) &&
1824 !(newf & PFR_TFLAG_REFDANCHOR) &&
1825 !(newf & PFR_TFLAG_PERSIST))
1826 newf &= ~PFR_TFLAG_ACTIVE;
1827 if (!(newf & PFR_TFLAG_ACTIVE))
1828 newf &= ~PFR_TFLAG_USRMASK;
1829 if (!(newf & PFR_TFLAG_SETMASK)) {
1830 RB_REMOVE(pfr_ktablehead, &V_pfr_ktables, kt);
1831 if (kt->pfrkt_root != NULL)
1832 if (!--kt->pfrkt_root->pfrkt_refcnt[PFR_REFCNT_ANCHOR])
1833 pfr_setflags_ktable(kt->pfrkt_root,
1834 kt->pfrkt_root->pfrkt_flags &
1835 ~PFR_TFLAG_REFDANCHOR);
1836 pfr_destroy_ktable(kt, 1);
1837 V_pfr_ktable_cnt--;
1838 return;
1839 }
1840 if (!(newf & PFR_TFLAG_ACTIVE) && kt->pfrkt_cnt) {
1841 pfr_enqueue_addrs(kt, &addrq, NULL, 0);
1842 pfr_remove_kentries(kt, &addrq);
1843 }
1844 if (!(newf & PFR_TFLAG_INACTIVE) && kt->pfrkt_shadow != NULL) {
1845 pfr_destroy_ktable(kt->pfrkt_shadow, 1);
1846 kt->pfrkt_shadow = NULL;
1847 }
1848 kt->pfrkt_flags = newf;
1849}
1850
1851static void
1852pfr_clstats_ktables(struct pfr_ktableworkq *workq, long tzero, int recurse)

Callers 5

pfr_commit_ktableFunction · 0.85
pfr_insert_ktableFunction · 0.85
pfr_setflags_ktablesFunction · 0.85
pfr_attach_tableFunction · 0.85
pfr_detach_tableFunction · 0.85

Calls 3

pfr_destroy_ktableFunction · 0.85
pfr_enqueue_addrsFunction · 0.85
pfr_remove_kentriesFunction · 0.85

Tested by

no test coverage detected