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 *dyn; in pfi_dynaddr_setup() local
322 if ((dyn = pool_get(&pfi_addr_pl, PR_WAITOK)) == NULL) { in pfi_dynaddr_setup()
325 bzero(dyn, sizeof(*dyn)); in pfi_dynaddr_setup()
328 dyn->pfid_kif = pfi_kif_get(IFG_ALL); in pfi_dynaddr_setup()
330 dyn->pfid_kif = pfi_kif_get(aw->v.ifname); in pfi_dynaddr_setup()
332 if (dyn->pfid_kif == NULL) { in pfi_dynaddr_setup()
336 pfi_kif_ref(dyn->pfid_kif, PFI_KIF_REF_RULE); in pfi_dynaddr_setup()
338 dyn->pfid_net = pfi_unmask(&aw->v.a.mask); in pfi_dynaddr_setup()
339 if (af == AF_INET && dyn->pfid_net == 32) { in pfi_dynaddr_setup()
340 dyn->pfid_net = 128; in pfi_dynaddr_setup()
355 if (dyn->pfid_net != 128) { in pfi_dynaddr_setup()
357 sizeof(tblname) - strlen(tblname), "/%d", dyn->pfid_net); in pfi_dynaddr_setup()
364 if ((dyn->pfid_kt = pfr_attach_table(ruleset, tblname)) == NULL) { in pfi_dynaddr_setup()
369 dyn->pfid_kt->pfrkt_flags |= PFR_TFLAG_ACTIVE; in pfi_dynaddr_setup()
370 dyn->pfid_iflags = aw->iflags; in pfi_dynaddr_setup()
371 dyn->pfid_af = af; in pfi_dynaddr_setup()
373 TAILQ_INSERT_TAIL(&dyn->pfid_kif->pfik_dynaddrs, dyn, entry); in pfi_dynaddr_setup()
374 aw->p.dyn = dyn; in pfi_dynaddr_setup()
375 pfi_kif_update(dyn->pfid_kif); in pfi_dynaddr_setup()
379 if (dyn->pfid_kt != NULL) { in pfi_dynaddr_setup()
380 pfr_detach_table(dyn->pfid_kt); in pfi_dynaddr_setup()
385 if (dyn->pfid_kif != NULL) { in pfi_dynaddr_setup()
386 pfi_kif_unref(dyn->pfid_kif, PFI_KIF_REF_RULE); in pfi_dynaddr_setup()
388 pool_put(&pfi_addr_pl, dyn); in pfi_dynaddr_setup()
405 pfi_dynaddr_update(struct pfi_dynaddr *dyn) in pfi_dynaddr_update() argument
410 if (dyn == NULL || dyn->pfid_kif == NULL || dyn->pfid_kt == NULL) { in pfi_dynaddr_update()
414 kif = dyn->pfid_kif; in pfi_dynaddr_update()
415 kt = dyn->pfid_kt; in pfi_dynaddr_update()
419 pfi_table_update(kt, kif, dyn->pfid_net, dyn->pfid_iflags); in pfi_dynaddr_update()
422 pfr_dynaddr_update(kt, dyn); in pfi_dynaddr_update()
587 if (aw->type != PF_ADDR_DYNIFTL || aw->p.dyn == NULL || in pfi_dynaddr_remove()
588 aw->p.dyn->pfid_kif == NULL || aw->p.dyn->pfid_kt == NULL) { in pfi_dynaddr_remove()
592 TAILQ_REMOVE(&aw->p.dyn->pfid_kif->pfik_dynaddrs, aw->p.dyn, entry); in pfi_dynaddr_remove()
593 pfi_kif_unref(aw->p.dyn->pfid_kif, PFI_KIF_REF_RULE); in pfi_dynaddr_remove()
594 aw->p.dyn->pfid_kif = NULL; in pfi_dynaddr_remove()
595 pfr_detach_table(aw->p.dyn->pfid_kt); in pfi_dynaddr_remove()
596 aw->p.dyn->pfid_kt = NULL; in pfi_dynaddr_remove()
597 pool_put(&pfi_addr_pl, aw->p.dyn); in pfi_dynaddr_remove()
598 aw->p.dyn = NULL; in pfi_dynaddr_remove()
604 if (aw->type != PF_ADDR_DYNIFTL || aw->p.dyn == NULL || in pfi_dynaddr_copyout()
605 aw->p.dyn->pfid_kif == NULL) { in pfi_dynaddr_copyout()
608 aw->p.dyncnt = aw->p.dyn->pfid_acnt4 + aw->p.dyn->pfid_acnt6; in pfi_dynaddr_copyout()