Lines Matching defs:dyn

88 static void	 pfi_dynaddr_update(struct pfi_dynaddr *dyn);
507 pfi_match_addr(struct pfi_dynaddr *dyn, struct pf_addr *a, sa_family_t af)
512 switch (dyn->pfid_acnt4) {
516 return (PF_MATCHA(0, &dyn->pfid_addr4,
517 &dyn->pfid_mask4, a, AF_INET));
519 return (pfr_match_addr(dyn->pfid_kt, a, AF_INET));
525 switch (dyn->pfid_acnt6) {
529 return (PF_MATCHA(0, &dyn->pfid_addr6,
530 &dyn->pfid_mask6, a, AF_INET6));
532 return (pfr_match_addr(dyn->pfid_kt, a, AF_INET6));
545 struct pfi_dynaddr *dyn;
554 KASSERT(aw->p.dyn == NULL, ("%s: dyn is %p", __func__, aw->p.dyn));
556 if ((dyn = malloc(sizeof(*dyn), PFI_MTYPE, M_NOWAIT | M_ZERO)) == NULL)
560 free(dyn, PFI_MTYPE);
565 dyn->pfid_kif = pfi_kkif_attach(kif, IFG_ALL);
567 dyn->pfid_kif = pfi_kkif_attach(kif, aw->v.ifname);
569 pfi_kkif_ref(dyn->pfid_kif);
571 dyn->pfid_net = pfi_unmask(&aw->v.a.mask);
572 if (af == AF_INET && dyn->pfid_net == 32)
573 dyn->pfid_net = 128;
583 if (dyn->pfid_net != 128)
585 sizeof(tblname) - strlen(tblname), "/%d", dyn->pfid_net);
591 if ((dyn->pfid_kt = pfr_attach_table(ruleset, tblname)) == NULL) {
596 dyn->pfid_kt->pfrkt_flags |= PFR_TFLAG_ACTIVE;
597 dyn->pfid_iflags = aw->iflags;
598 dyn->pfid_af = af;
600 TAILQ_INSERT_TAIL(&dyn->pfid_kif->pfik_dynaddrs, dyn, entry);
601 aw->p.dyn = dyn;
603 pfi_kkif_update(dyn->pfid_kif);
609 if (dyn->pfid_kt != NULL)
610 pfr_detach_table(dyn->pfid_kt);
613 pfi_kkif_unref(dyn->pfid_kif);
614 free(dyn, PFI_MTYPE);
655 pfi_dynaddr_update(struct pfi_dynaddr *dyn)
661 KASSERT(dyn && dyn->pfid_kif && dyn->pfid_kt,
664 kif = dyn->pfid_kif;
665 kt = dyn->pfid_kt;
669 pfi_table_update(kt, kif, dyn->pfid_net, dyn->pfid_iflags);
672 pfr_dynaddr_update(kt, dyn);
814 pfi_dynaddr_remove(struct pfi_dynaddr *dyn)
817 KASSERT(dyn->pfid_kif != NULL, ("%s: null pfid_kif", __func__));
818 KASSERT(dyn->pfid_kt != NULL, ("%s: null pfid_kt", __func__));
820 TAILQ_REMOVE(&dyn->pfid_kif->pfik_dynaddrs, dyn, entry);
821 pfi_kkif_unref(dyn->pfid_kif);
822 pfr_detach_table(dyn->pfid_kt);
823 free(dyn, PFI_MTYPE);
833 if (aw->p.dyn == NULL || aw->p.dyn->pfid_kif == NULL)
835 aw->p.dyncnt = aw->p.dyn->pfid_acnt4 + aw->p.dyn->pfid_acnt6;