Home | History | Annotate | Download | only in net

Lines Matching defs:kt

238 	struct pfr_ktable	*kt;
245 kt = pfr_lookup_table(tbl);
246 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
248 if (kt->pfrkt_flags & PFR_TFLAG_CONST)
250 pfr_enqueue_addrs(kt, &workq, ndel, 0);
255 pfr_remove_kentries(kt, &workq);
258 if (kt->pfrkt_cnt) {
260 kt->pfrkt_cnt);
261 kt->pfrkt_cnt = 0;
271 struct pfr_ktable *kt, *tmpkt;
282 kt = pfr_lookup_table(tbl);
283 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
285 if (kt->pfrkt_flags & PFR_TFLAG_CONST)
296 p = pfr_lookup_addr(kt, &ad, 1);
329 pfr_insert_kentries(kt, &workq, tzero);
351 struct pfr_ktable *kt;
361 kt = pfr_lookup_table(tbl);
362 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
364 if (kt->pfrkt_flags & PFR_TFLAG_CONST)
377 for (i = kt->pfrkt_cnt; i > 0; i >>= 1)
379 if (size > kt->pfrkt_cnt/log) {
381 pfr_mark_addrs(kt);
389 p = pfr_lookup_addr(kt, &ad, 1);
400 p = pfr_lookup_addr(kt, &ad, 1);
424 pfr_remove_kentries(kt, &workq);
442 struct pfr_ktable *kt, *tmpkt;
455 kt = pfr_lookup_table(tbl);
456 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
458 if (kt->pfrkt_flags & PFR_TFLAG_CONST)
463 pfr_mark_addrs(kt);
473 p = pfr_lookup_addr(kt, &ad, 1);
509 pfr_enqueue_addrs(kt, &delq, &xdel, ENQUEUE_UNMARKED_ONLY);
528 pfr_insert_kentries(kt, &addq, tzero);
529 pfr_remove_kentries(kt, &delq);
558 struct pfr_ktable *kt;
566 kt = pfr_lookup_table(tbl);
567 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
577 p = pfr_lookup_addr(kt, &ad, 0);
596 struct pfr_ktable *kt;
603 kt = pfr_lookup_table(tbl);
604 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
606 if (kt->pfrkt_cnt > *size) {
607 *size = kt->pfrkt_cnt;
614 w.pfrw_free = kt->pfrkt_cnt;
616 rv = rn_walktree(kt->pfrkt_ip4, pfr_walktree, &w);
618 rv = rn_walktree(kt->pfrkt_ip6, pfr_walktree, &w);
627 *size = kt->pfrkt_cnt;
635 struct pfr_ktable *kt;
645 kt = pfr_lookup_table(tbl);
646 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
648 if (kt->pfrkt_cnt > *size) {
649 *size = kt->pfrkt_cnt;
656 w.pfrw_free = kt->pfrkt_cnt;
660 rv = rn_walktree(kt->pfrkt_ip4, pfr_walktree, &w);
662 rv = rn_walktree(kt->pfrkt_ip6, pfr_walktree, &w);
664 pfr_enqueue_addrs(kt, &workq, NULL, 0);
677 *size = kt->pfrkt_cnt;
685 struct pfr_ktable *kt;
695 kt = pfr_lookup_table(tbl);
696 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
704 p = pfr_lookup_addr(kt, &ad, 1);
768 pfr_enqueue_addrs(struct pfr_ktable *kt, struct pfr_kentryworkq *workq,
777 if (kt->pfrkt_ip4 != NULL)
778 if (rn_walktree(kt->pfrkt_ip4, pfr_walktree, &w))
780 if (kt->pfrkt_ip6 != NULL)
781 if (rn_walktree(kt->pfrkt_ip6, pfr_walktree, &w))
788 pfr_mark_addrs(struct pfr_ktable *kt)
794 if (rn_walktree(kt->pfrkt_ip4, pfr_walktree, &w))
796 if (rn_walktree(kt->pfrkt_ip6, pfr_walktree, &w))
802 pfr_lookup_addr(struct pfr_ktable *kt, struct pfr_addr *ad, int exact)
812 head = kt->pfrkt_ip4;
815 head = kt->pfrkt_ip6;
879 pfr_insert_kentries(struct pfr_ktable *kt,
886 rv = pfr_route_kentry(kt, p);
895 kt->pfrkt_cnt += n;
899 pfr_insert_kentry(struct pfr_ktable *kt, struct pfr_addr *ad, long tzero)
904 p = pfr_lookup_addr(kt, ad, 1);
911 rv = pfr_route_kentry(kt, p);
916 kt->pfrkt_cnt++;
922 pfr_remove_kentries(struct pfr_ktable *kt,
929 pfr_unroute_kentry(kt, p);
932 kt->pfrkt_cnt -= n;
937 pfr_clean_node_mask(struct pfr_ktable *kt,
943 pfr_unroute_kentry(kt, p);
1004 pfr_route_kentry(struct pfr_ktable *kt, struct pfr_kentry *ke)
1013 head = kt->pfrkt_ip4;
1015 head = kt->pfrkt_ip6;
1029 pfr_unroute_kentry(struct pfr_ktable *kt, struct pfr_kentry *ke)
1037 head = kt->pfrkt_ip4;
1039 head = kt->pfrkt_ip6;
1519 struct pfr_ktable *kt, *rt, *shadow, key;
1536 kt = RB_FIND(pfr_ktablehead, &pfr_ktables, (struct pfr_ktable *)tbl);
1537 if (kt == NULL) {
1538 kt = pfr_create_ktable(tbl, 0, 1);
1539 if (kt == NULL)
1541 SLIST_INSERT_HEAD(&tableq, kt, pfrkt_workq);
1551 kt->pfrkt_root = rt;
1560 kt->pfrkt_root = rt;
1561 } else if (!(kt->pfrkt_flags & PFR_TFLAG_INACTIVE))
1588 if (kt->pfrkt_shadow != NULL)
1589 pfr_destroy_ktable(kt->pfrkt_shadow, 1);
1590 kt->pfrkt_flags |= PFR_TFLAG_INACTIVE;
1594 kt->pfrkt_shadow = shadow;
1692 pfr_commit_ktable(struct pfr_ktable *kt, long tzero)
1694 struct pfr_ktable *shadow = kt->pfrkt_shadow;
1698 if (!(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
1699 pfr_clstats_ktable(kt, tzero, 1);
1700 } else if (kt->pfrkt_flags & PFR_TFLAG_ACTIVE) {
1701 /* kt might contain addresses */
1707 pfr_mark_addrs(kt);
1716 q = pfr_lookup_addr(kt, &ad, 1);
1728 pfr_enqueue_addrs(kt, &delq, NULL, ENQUEUE_UNMARKED_ONLY);
1729 pfr_insert_kentries(kt, &addq, tzero);
1730 pfr_remove_kentries(kt, &delq);
1734 /* kt cannot contain addresses */
1735 SWAP(struct radix_node_head *, kt->pfrkt_ip4,
1737 SWAP(struct radix_node_head *, kt->pfrkt_ip6,
1739 SWAP(int, kt->pfrkt_cnt, shadow->pfrkt_cnt);
1740 pfr_clstats_ktable(kt, tzero, 1);
1743 (kt->pfrkt_flags & PFR_TFLAG_SETMASK) | PFR_TFLAG_ACTIVE)
1746 kt->pfrkt_shadow = NULL;
1747 pfr_setflags_ktable(kt, nflags);
1815 pfr_skip_table(struct pfr_table *filter, struct pfr_ktable *kt, int flags)
1819 if (strcmp(filter->pfrt_anchor, kt->pfrkt_anchor))
1834 pfr_insert_ktable(struct pfr_ktable *kt)
1836 RB_INSERT(pfr_ktablehead, &pfr_ktables, kt);
1838 if (kt->pfrkt_root != NULL)
1839 if (!kt->pfrkt_root->pfrkt_refcnt[PFR_REFCNT_ANCHOR]++)
1840 pfr_setflags_ktable(kt->pfrkt_root,
1841 kt->pfrkt_root->pfrkt_flags|PFR_TFLAG_REFDANCHOR);
1856 pfr_setflags_ktable(struct pfr_ktable *kt, int newf)
1866 RB_REMOVE(pfr_ktablehead, &pfr_ktables, kt);
1867 if (kt->pfrkt_root != NULL)
1868 if (!--kt->pfrkt_root->pfrkt_refcnt[PFR_REFCNT_ANCHOR])
1869 pfr_setflags_ktable(kt->pfrkt_root,
1870 kt->pfrkt_root->pfrkt_flags &
1872 pfr_destroy_ktable(kt, 1);
1876 if (!(newf & PFR_TFLAG_ACTIVE) && kt->pfrkt_cnt) {
1877 pfr_enqueue_addrs(kt, &addrq, NULL, 0);
1878 pfr_remove_kentries(kt, &addrq);
1880 if (!(newf & PFR_TFLAG_INACTIVE) && kt->pfrkt_shadow != NULL) {
1881 pfr_destroy_ktable(kt->pfrkt_shadow, 1);
1882 kt->pfrkt_shadow = NULL;
1884 kt->pfrkt_flags = newf;
1897 pfr_clstats_ktable(struct pfr_ktable *kt, long tzero, int recurse)
1903 pfr_enqueue_addrs(kt, &addrq, NULL, 0);
1907 bzero(kt->pfrkt_packets, sizeof(kt->pfrkt_packets));
1908 bzero(kt->pfrkt_bytes, sizeof(kt->pfrkt_bytes));
1909 kt->pfrkt_match = kt->pfrkt_nomatch = 0;
1911 kt->pfrkt_tzero = tzero;
1917 struct pfr_ktable *kt;
1921 kt = pool_get(&pfr_ktable_pl, PR_NOWAIT);
1922 if (kt == NULL)
1924 bzero(kt, sizeof(*kt));
1925 kt->pfrkt_t = *tbl;
1930 pfr_destroy_ktable(kt, 0);
1933 kt->pfrkt_rs = rs;
1944 kt->pfrkt_ip4 = h4;
1945 kt->pfrkt_ip6 = h6;
1946 kt->pfrkt_tzero = tzero;
1948 return (kt);
1950 pfr_destroy_ktable(kt, 0);
1966 pfr_destroy_ktable(struct pfr_ktable *kt, int flushaddr)
1971 pfr_enqueue_addrs(kt, &addrq, NULL, 0);
1972 pfr_clean_node_mask(kt, &addrq);
1975 if (kt->pfrkt_ip4 != NULL)
1976 free((void *)kt->pfrkt_ip4, M_RTABLE);
1977 if (kt->pfrkt_ip6 != NULL)
1978 free((void *)kt->pfrkt_ip6, M_RTABLE);
1979 if (kt->pfrkt_shadow != NULL)
1980 pfr_destroy_ktable(kt->pfrkt_shadow, flushaddr);
1981 if (kt->pfrkt_rs != NULL) {
1982 kt->pfrkt_rs->tables--;
1983 pf_remove_if_empty_ruleset(kt->pfrkt_rs);
1985 pool_put(&pfr_ktable_pl, kt);
2007 pfr_match_addr(struct pfr_ktable *kt, struct pf_addr *a, sa_family_t af)
2012 if (!(kt->pfrkt_flags & PFR_TFLAG_ACTIVE) && kt->pfrkt_root != NULL)
2013 kt = kt->pfrkt_root;
2014 if (!(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
2021 ke = (struct pfr_kentry *)rn_match(&pfr_sin, kt->pfrkt_ip4);
2029 ke = (struct pfr_kentry *)rn_match(&pfr_sin6, kt->pfrkt_ip6);
2037 kt->pfrkt_match++;
2039 kt->pfrkt_nomatch++;
2044 pfr_update_stats(struct pfr_ktable *kt, struct pf_addr *a, sa_family_t af,
2049 if (!(kt->pfrkt_flags & PFR_TFLAG_ACTIVE) && kt->pfrkt_root != NULL)
2050 kt = kt->pfrkt_root;
2051 if (!(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
2058 ke = (struct pfr_kentry *)rn_match(&pfr_sin, kt->pfrkt_ip4);
2066 ke = (struct pfr_kentry *)rn_match(&pfr_sin6, kt->pfrkt_ip6);
2079 kt->pfrkt_packets[dir_out][op_pass]++;
2080 kt->pfrkt_bytes[dir_out][op_pass] += len;
2090 struct pfr_ktable *kt, *rt;
2098 kt = pfr_lookup_table(&tbl);
2099 if (kt == NULL) {
2100 kt = pfr_create_ktable(&tbl, time_second, 1);
2101 if (kt == NULL)
2109 pfr_destroy_ktable(kt, 0);
2114 kt->pfrkt_root = rt;
2116 pfr_insert_ktable(kt);
2118 if (!kt->pfrkt_refcnt[PFR_REFCNT_RULE]++)
2119 pfr_setflags_ktable(kt, kt->pfrkt_flags|PFR_TFLAG_REFERENCED);
2120 return (kt);
2124 pfr_detach_table(struct pfr_ktable *kt)
2126 if (kt->pfrkt_refcnt[PFR_REFCNT_RULE] <= 0)
2128 kt->pfrkt_refcnt[PFR_REFCNT_RULE]);
2129 else if (!--kt->pfrkt_refcnt[PFR_REFCNT_RULE])
2130 pfr_setflags_ktable(kt, kt->pfrkt_flags&~PFR_TFLAG_REFERENCED);
2134 pfr_pool_get(struct pfr_ktable *kt, int *pidx, struct pf_addr *counter,
2146 if (!(kt->pfrkt_flags & PFR_TFLAG_ACTIVE) && kt->pfrkt_root != NULL)
2147 kt = kt->pfrkt_root;
2148 if (!(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
2159 ke = pfr_kentry_byidx(kt, idx, af);
2190 kt->pfrkt_ip4);
2193 kt->pfrkt_ip6);
2217 pfr_kentry_byidx(struct pfr_ktable *kt, int idx, int af)
2228 rn_walktree(kt->pfrkt_ip4, pfr_walktree, &w);
2233 rn_walktree(kt->pfrkt_ip6, pfr_walktree, &w);
2242 pfr_dynaddr_update(struct pfr_ktable *kt, struct pfi_dynaddr *dyn)
2255 rn_walktree(kt->pfrkt_ip4, pfr_walktree, &w);
2257 rn_walktree(kt->pfrkt_ip6, pfr_walktree, &w);