Lines Matching refs:dyn

88 static void	 pfi_dynaddr_update(struct pfi_dynaddr *dyn);
468 pfi_match_addr(struct pfi_dynaddr *dyn, struct pf_addr *a, sa_family_t af) in pfi_match_addr() argument
473 switch (dyn->pfid_acnt4) { in pfi_match_addr()
477 return (PF_MATCHA(0, &dyn->pfid_addr4, in pfi_match_addr()
478 &dyn->pfid_mask4, a, AF_INET)); in pfi_match_addr()
480 return (pfr_match_addr(dyn->pfid_kt, a, AF_INET)); in pfi_match_addr()
486 switch (dyn->pfid_acnt6) { in pfi_match_addr()
490 return (PF_MATCHA(0, &dyn->pfid_addr6, in pfi_match_addr()
491 &dyn->pfid_mask6, a, AF_INET6)); in pfi_match_addr()
493 return (pfr_match_addr(dyn->pfid_kt, a, AF_INET6)); in pfi_match_addr()
506 struct pfi_dynaddr *dyn; in pfi_dynaddr_setup() local
515 KASSERT(aw->p.dyn == NULL, ("%s: dyn is %p", __func__, aw->p.dyn)); in pfi_dynaddr_setup()
517 if ((dyn = malloc(sizeof(*dyn), PFI_MTYPE, M_NOWAIT | M_ZERO)) == NULL) in pfi_dynaddr_setup()
521 free(dyn, PFI_MTYPE); in pfi_dynaddr_setup()
526 dyn->pfid_kif = pfi_kkif_attach(kif, IFG_ALL); in pfi_dynaddr_setup()
528 dyn->pfid_kif = pfi_kkif_attach(kif, aw->v.ifname); in pfi_dynaddr_setup()
530 pfi_kkif_ref(dyn->pfid_kif); in pfi_dynaddr_setup()
532 dyn->pfid_net = pfi_unmask(&aw->v.a.mask); in pfi_dynaddr_setup()
533 if (af == AF_INET && dyn->pfid_net == 32) in pfi_dynaddr_setup()
534 dyn->pfid_net = 128; in pfi_dynaddr_setup()
544 if (dyn->pfid_net != 128) in pfi_dynaddr_setup()
546 sizeof(tblname) - strlen(tblname), "/%d", dyn->pfid_net); in pfi_dynaddr_setup()
552 if ((dyn->pfid_kt = pfr_attach_table(ruleset, tblname)) == NULL) { in pfi_dynaddr_setup()
557 dyn->pfid_kt->pfrkt_flags |= PFR_TFLAG_ACTIVE; in pfi_dynaddr_setup()
558 dyn->pfid_iflags = aw->iflags; in pfi_dynaddr_setup()
559 dyn->pfid_af = af; in pfi_dynaddr_setup()
561 TAILQ_INSERT_TAIL(&dyn->pfid_kif->pfik_dynaddrs, dyn, entry); in pfi_dynaddr_setup()
562 aw->p.dyn = dyn; in pfi_dynaddr_setup()
564 pfi_kkif_update(dyn->pfid_kif); in pfi_dynaddr_setup()
570 if (dyn->pfid_kt != NULL) in pfi_dynaddr_setup()
571 pfr_detach_table(dyn->pfid_kt); in pfi_dynaddr_setup()
574 pfi_kkif_unref(dyn->pfid_kif); in pfi_dynaddr_setup()
575 free(dyn, PFI_MTYPE); in pfi_dynaddr_setup()
616 pfi_dynaddr_update(struct pfi_dynaddr *dyn) in pfi_dynaddr_update() argument
622 KASSERT(dyn && dyn->pfid_kif && dyn->pfid_kt, in pfi_dynaddr_update()
625 kif = dyn->pfid_kif; in pfi_dynaddr_update()
626 kt = dyn->pfid_kt; in pfi_dynaddr_update()
630 pfi_table_update(kt, kif, dyn->pfid_net, dyn->pfid_iflags); in pfi_dynaddr_update()
633 pfr_dynaddr_update(kt, dyn); in pfi_dynaddr_update()
775 pfi_dynaddr_remove(struct pfi_dynaddr *dyn) in pfi_dynaddr_remove() argument
778 KASSERT(dyn->pfid_kif != NULL, ("%s: null pfid_kif", __func__)); in pfi_dynaddr_remove()
779 KASSERT(dyn->pfid_kt != NULL, ("%s: null pfid_kt", __func__)); in pfi_dynaddr_remove()
781 TAILQ_REMOVE(&dyn->pfid_kif->pfik_dynaddrs, dyn, entry); in pfi_dynaddr_remove()
782 pfi_kkif_unref(dyn->pfid_kif); in pfi_dynaddr_remove()
783 pfr_detach_table(dyn->pfid_kt); in pfi_dynaddr_remove()
784 free(dyn, PFI_MTYPE); in pfi_dynaddr_remove()
794 if (aw->p.dyn == NULL || aw->p.dyn->pfid_kif == NULL) in pfi_dynaddr_copyout()
796 aw->p.dyncnt = aw->p.dyn->pfid_acnt4 + aw->p.dyn->pfid_acnt6; in pfi_dynaddr_copyout()