Home | History | Annotate | Download | only in net

Lines Matching defs:dyn

77 void		 pfi_dynaddr_update(struct pfi_dynaddr *dyn);
387 pfi_match_addr(struct pfi_dynaddr *dyn, struct pf_addr *a, sa_family_t af)
392 switch (dyn->pfid_acnt4) {
396 return (PF_MATCHA(0, &dyn->pfid_addr4,
397 &dyn->pfid_mask4, a, AF_INET));
399 return (pfr_match_addr(dyn->pfid_kt, a, AF_INET));
405 switch (dyn->pfid_acnt6) {
409 return (PF_MATCHA(0, &dyn->pfid_addr6,
410 &dyn->pfid_mask6, a, AF_INET6));
412 return (pfr_match_addr(dyn->pfid_kt, a, AF_INET6));
424 struct pfi_dynaddr *dyn;
431 if ((dyn = pool_get(&pfi_addr_pl, PR_NOWAIT)) == NULL)
433 bzero(dyn, sizeof(*dyn));
437 dyn->pfid_kif = pfi_kif_get(IFG_ALL);
439 dyn->pfid_kif = pfi_kif_get(aw->v.ifname);
440 if (dyn->pfid_kif == NULL) {
444 pfi_kif_ref(dyn->pfid_kif, PFI_KIF_REF_RULE);
446 dyn->pfid_net = pfi_unmask(&aw->v.a.mask);
447 if (af == AF_INET && dyn->pfid_net == 32)
448 dyn->pfid_net = 128;
458 if (dyn->pfid_net != 128)
460 sizeof(tblname) - strlen(tblname), "/%d", dyn->pfid_net);
466 if ((dyn->pfid_kt = pfr_attach_table(ruleset, tblname)) == NULL) {
471 dyn->pfid_kt->pfrkt_flags |= PFR_TFLAG_ACTIVE;
472 dyn->pfid_iflags = aw->iflags;
473 dyn->pfid_af = af;
475 TAILQ_INSERT_TAIL(&dyn->pfid_kif->pfik_dynaddrs, dyn, entry);
476 aw->p.dyn = dyn;
477 pfi_kif_update(dyn->pfid_kif);
482 if (dyn->pfid_kt != NULL)
483 pfr_detach_table(dyn->pfid_kt);
486 if (dyn->pfid_kif != NULL)
487 pfi_kif_unref(dyn->pfid_kif, PFI_KIF_REF_RULE);
488 pool_put(&pfi_addr_pl, dyn);
514 pfi_dynaddr_update(struct pfi_dynaddr *dyn)
519 if (dyn == NULL || dyn->pfid_kif == NULL || dyn->pfid_kt == NULL)
522 kif = dyn->pfid_kif;
523 kt = dyn->pfid_kt;
527 pfi_table_update(kt, kif, dyn->pfid_net, dyn->pfid_iflags);
530 pfr_dynaddr_update(kt, dyn);
664 if (aw->type != PF_ADDR_DYNIFTL || aw->p.dyn == NULL ||
665 aw->p.dyn->pfid_kif == NULL || aw->p.dyn->pfid_kt == NULL)
669 TAILQ_REMOVE(&aw->p.dyn->pfid_kif->pfik_dynaddrs, aw->p.dyn, entry);
670 pfi_kif_unref(aw->p.dyn->pfid_kif, PFI_KIF_REF_RULE);
671 aw->p.dyn->pfid_kif = NULL;
672 pfr_detach_table(aw->p.dyn->pfid_kt);
673 aw->p.dyn->pfid_kt = NULL;
674 pool_put(&pfi_addr_pl, aw->p.dyn);
675 dyn = NULL;
682 if (aw->type != PF_ADDR_DYNIFTL || aw->p.dyn == NULL ||
683 aw->p.dyn->pfid_kif == NULL)
685 aw->p.dyncnt = aw->p.dyn->pfid_acnt4 + aw->p.dyn->pfid_acnt6;