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

Function pf_find_src_node

freebsd/netpfil/pf/pf.c:680–703  ·  view source on GitHub ↗

* Can return locked on failure, so that we can consistently * allocate and insert a new one. */

Source from the content-addressed store, hash-verified

678 * allocate and insert a new one.
679 */
680struct pf_ksrc_node *
681pf_find_src_node(struct pf_addr *src, struct pf_krule *rule, sa_family_t af,
682 int returnlocked)
683{
684 struct pf_srchash *sh;
685 struct pf_ksrc_node *n;
686
687 counter_u64_add(V_pf_status.scounters[SCNT_SRC_NODE_SEARCH], 1);
688
689 sh = &V_pf_srchash[pf_hashsrc(src, af)];
690 PF_HASHROW_LOCK(sh);
691 LIST_FOREACH(n, &sh->nodes, entry)
692 if (n->rule.ptr == rule && n->af == af &&
693 ((af == AF_INET && n->addr.v4.s_addr == src->v4.s_addr) ||
694 (af == AF_INET6 && bcmp(&n->addr, src, sizeof(*src)) == 0)))
695 break;
696 if (n != NULL) {
697 n->states++;
698 PF_HASHROW_UNLOCK(sh);
699 } else if (returnlocked == 0)
700 PF_HASHROW_UNLOCK(sh);
701
702 return (n);
703}
704
705static void
706pf_free_src_node(struct pf_ksrc_node *sn)

Callers 2

pf_map_addrFunction · 0.85
pf_insert_src_nodeFunction · 0.85

Calls 2

pf_hashsrcFunction · 0.85
counter_u64_addFunction · 0.50

Tested by

no test coverage detected