Lines Matching refs:dyn
100 static void pfi_dynaddr_update(struct pfi_dynaddr *dyn);
279 pfi_match_addr(struct pfi_dynaddr *dyn, struct pf_addr *a, sa_family_t af) in pfi_match_addr() argument
284 switch (dyn->pfid_acnt4) { in pfi_match_addr()
288 return PF_MATCHA(0, &dyn->pfid_addr4, in pfi_match_addr()
289 &dyn->pfid_mask4, a, AF_INET); in pfi_match_addr()
291 return pfr_match_addr(dyn->pfid_kt, a, AF_INET); in pfi_match_addr()
295 switch (dyn->pfid_acnt6) { in pfi_match_addr()
299 return PF_MATCHA(0, &dyn->pfid_addr6, in pfi_match_addr()
300 &dyn->pfid_mask6, a, AF_INET6); in pfi_match_addr()
302 return pfr_match_addr(dyn->pfid_kt, a, AF_INET6); in pfi_match_addr()
312 struct pfi_dynaddr *__single dyn; in pfi_dynaddr_setup() local
323 if ((dyn = pool_get(&pfi_addr_pl, PR_WAITOK)) == NULL) { in pfi_dynaddr_setup()
326 bzero(dyn, sizeof(*dyn)); in pfi_dynaddr_setup()
329 dyn->pfid_kif = pfi_kif_get(IFG_ALL); in pfi_dynaddr_setup()
331 dyn->pfid_kif = pfi_kif_get(__unsafe_null_terminated_from_indexable(aw->v.ifname)); in pfi_dynaddr_setup()
333 if (dyn->pfid_kif == NULL) { in pfi_dynaddr_setup()
337 pfi_kif_ref(dyn->pfid_kif, PFI_KIF_REF_RULE); in pfi_dynaddr_setup()
339 dyn->pfid_net = pfi_unmask(&aw->v.a.mask); in pfi_dynaddr_setup()
340 if (af == AF_INET && dyn->pfid_net == 32) { in pfi_dynaddr_setup()
341 dyn->pfid_net = 128; in pfi_dynaddr_setup()
356 if (dyn->pfid_net == 128) { in pfi_dynaddr_setup()
360 sizeof(tblnamebuf) - strbuflen(tblnamebuf), "/%d", dyn->pfid_net); in pfi_dynaddr_setup()
367 if ((dyn->pfid_kt = pfr_attach_table(ruleset, tblname)) == NULL) { in pfi_dynaddr_setup()
372 dyn->pfid_kt->pfrkt_flags |= PFR_TFLAG_ACTIVE; in pfi_dynaddr_setup()
373 dyn->pfid_iflags = aw->iflags; in pfi_dynaddr_setup()
374 dyn->pfid_af = af; in pfi_dynaddr_setup()
376 TAILQ_INSERT_TAIL(&dyn->pfid_kif->pfik_dynaddrs, dyn, entry); in pfi_dynaddr_setup()
377 aw->p.dyn = dyn; in pfi_dynaddr_setup()
378 pfi_kif_update(dyn->pfid_kif); in pfi_dynaddr_setup()
382 if (dyn->pfid_kt != NULL) { in pfi_dynaddr_setup()
383 pfr_detach_table(dyn->pfid_kt); in pfi_dynaddr_setup()
388 if (dyn->pfid_kif != NULL) { in pfi_dynaddr_setup()
389 pfi_kif_unref(dyn->pfid_kif, PFI_KIF_REF_RULE); in pfi_dynaddr_setup()
391 pool_put(&pfi_addr_pl, dyn); in pfi_dynaddr_setup()
408 pfi_dynaddr_update(struct pfi_dynaddr *dyn) in pfi_dynaddr_update() argument
413 if (dyn == NULL || dyn->pfid_kif == NULL || dyn->pfid_kt == NULL) { in pfi_dynaddr_update()
417 kif = dyn->pfid_kif; in pfi_dynaddr_update()
418 kt = dyn->pfid_kt; in pfi_dynaddr_update()
422 pfi_table_update(kt, kif, dyn->pfid_net, dyn->pfid_iflags); in pfi_dynaddr_update()
425 pfr_dynaddr_update(kt, dyn); in pfi_dynaddr_update()
590 if (aw->type != PF_ADDR_DYNIFTL || aw->p.dyn == NULL || in pfi_dynaddr_remove()
591 aw->p.dyn->pfid_kif == NULL || aw->p.dyn->pfid_kt == NULL) { in pfi_dynaddr_remove()
595 TAILQ_REMOVE(&aw->p.dyn->pfid_kif->pfik_dynaddrs, aw->p.dyn, entry); in pfi_dynaddr_remove()
596 pfi_kif_unref(aw->p.dyn->pfid_kif, PFI_KIF_REF_RULE); in pfi_dynaddr_remove()
597 aw->p.dyn->pfid_kif = NULL; in pfi_dynaddr_remove()
598 pfr_detach_table(aw->p.dyn->pfid_kt); in pfi_dynaddr_remove()
599 aw->p.dyn->pfid_kt = NULL; in pfi_dynaddr_remove()
600 pool_put(&pfi_addr_pl, aw->p.dyn); in pfi_dynaddr_remove()
601 aw->p.dyn = NULL; in pfi_dynaddr_remove()
607 if (aw->type != PF_ADDR_DYNIFTL || aw->p.dyn == NULL || in pfi_dynaddr_copyout()
608 aw->p.dyn->pfid_kif == NULL) { in pfi_dynaddr_copyout()
611 aw->p.dyncnt = aw->p.dyn->pfid_acnt4 + aw->p.dyn->pfid_acnt6; in pfi_dynaddr_copyout()