Lines Matching refs:dyn

102 static void pfi_dynaddr_update(struct pfi_dynaddr *dyn);
276 pfi_match_addr(struct pfi_dynaddr *dyn, struct pf_addr *a, sa_family_t af)
281 switch (dyn->pfid_acnt4) {
285 return (PF_MATCHA(0, &dyn->pfid_addr4,
286 &dyn->pfid_mask4, a, AF_INET));
288 return (pfr_match_addr(dyn->pfid_kt, a, AF_INET));
294 switch (dyn->pfid_acnt6) {
298 return (PF_MATCHA(0, &dyn->pfid_addr6,
299 &dyn->pfid_mask6, a, AF_INET6));
301 return (pfr_match_addr(dyn->pfid_kt, a, AF_INET6));
313 struct pfi_dynaddr *dyn;
322 if ((dyn = pool_get(&pfi_addr_pl, PR_WAITOK)) == NULL)
324 bzero(dyn, sizeof (*dyn));
327 dyn->pfid_kif = pfi_kif_get(IFG_ALL);
329 dyn->pfid_kif = pfi_kif_get(aw->v.ifname);
330 if (dyn->pfid_kif == NULL) {
334 pfi_kif_ref(dyn->pfid_kif, PFI_KIF_REF_RULE);
336 dyn->pfid_net = pfi_unmask(&aw->v.a.mask);
337 if (af == AF_INET && dyn->pfid_net == 32)
338 dyn->pfid_net = 128;
348 if (dyn->pfid_net != 128)
350 sizeof (tblname) - strlen(tblname), "/%d", dyn->pfid_net);
356 if ((dyn->pfid_kt = pfr_attach_table(ruleset, tblname)) == NULL) {
361 dyn->pfid_kt->pfrkt_flags |= PFR_TFLAG_ACTIVE;
362 dyn->pfid_iflags = aw->iflags;
363 dyn->pfid_af = af;
365 TAILQ_INSERT_TAIL(&dyn->pfid_kif->pfik_dynaddrs, dyn, entry);
366 aw->p.dyn = dyn;
367 pfi_kif_update(dyn->pfid_kif);
371 if (dyn->pfid_kt != NULL)
372 pfr_detach_table(dyn->pfid_kt);
375 if (dyn->pfid_kif != NULL)
376 pfi_kif_unref(dyn->pfid_kif, PFI_KIF_REF_RULE);
377 pool_put(&pfi_addr_pl, dyn);
394 pfi_dynaddr_update(struct pfi_dynaddr *dyn)
399 if (dyn == NULL || dyn->pfid_kif == NULL || dyn->pfid_kt == NULL)
402 kif = dyn->pfid_kif;
403 kt = dyn->pfid_kt;
407 pfi_table_update(kt, kif, dyn->pfid_net, dyn->pfid_iflags);
410 pfr_dynaddr_update(kt, dyn);
557 if (aw->type != PF_ADDR_DYNIFTL || aw->p.dyn == NULL ||
558 aw->p.dyn->pfid_kif == NULL || aw->p.dyn->pfid_kt == NULL)
561 TAILQ_REMOVE(&aw->p.dyn->pfid_kif->pfik_dynaddrs, aw->p.dyn, entry);
562 pfi_kif_unref(aw->p.dyn->pfid_kif, PFI_KIF_REF_RULE);
563 aw->p.dyn->pfid_kif = NULL;
564 pfr_detach_table(aw->p.dyn->pfid_kt);
565 aw->p.dyn->pfid_kt = NULL;
566 pool_put(&pfi_addr_pl, aw->p.dyn);
567 aw->p.dyn = NULL;
573 if (aw->type != PF_ADDR_DYNIFTL || aw->p.dyn == NULL ||
574 aw->p.dyn->pfid_kif == NULL)
576 aw->p.dyncnt = aw->p.dyn->pfid_acnt4 + aw->p.dyn->pfid_acnt6;