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

Function pfr_get_addrs

freebsd/netpfil/pf/pf_table.c:550–587  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

548}
549
550int
551pfr_get_addrs(struct pfr_table *tbl, struct pfr_addr *addr, int *size,
552 int flags)
553{
554 struct pfr_ktable *kt;
555 struct pfr_walktree w;
556 int rv;
557
558 PF_RULES_RASSERT();
559
560 ACCEPT_FLAGS(flags, 0);
561 if (pfr_validate_table(tbl, 0, 0))
562 return (EINVAL);
563 kt = pfr_lookup_table(tbl);
564 if (kt == NULL || !(kt->pfrkt_flags & PFR_TFLAG_ACTIVE))
565 return (ESRCH);
566 if (kt->pfrkt_cnt > *size) {
567 *size = kt->pfrkt_cnt;
568 return (0);
569 }
570
571 bzero(&w, sizeof(w));
572 w.pfrw_op = PFRW_GET_ADDRS;
573 w.pfrw_addr = addr;
574 w.pfrw_free = kt->pfrkt_cnt;
575 rv = kt->pfrkt_ip4->rnh_walktree(&kt->pfrkt_ip4->rh, pfr_walktree, &w);
576 if (!rv)
577 rv = kt->pfrkt_ip6->rnh_walktree(&kt->pfrkt_ip6->rh,
578 pfr_walktree, &w);
579 if (rv)
580 return (rv);
581
582 KASSERT(w.pfrw_free == 0, ("%s: corruption detected (%d)", __func__,
583 w.pfrw_free));
584
585 *size = kt->pfrkt_cnt;
586 return (0);
587}
588
589int
590pfr_get_astats(struct pfr_table *tbl, struct pfr_astats *addr, int *size,

Callers 1

pfioctlFunction · 0.85

Calls 3

pfr_validate_tableFunction · 0.85
pfr_lookup_tableFunction · 0.85
bzeroFunction · 0.85

Tested by

no test coverage detected