Lines Matching defs:kif
188 struct pfi_kif *kif;
193 if ((kif = RB_FIND(pfi_ifhead, &pfi_ifs, (struct pfi_kif *)&s)) != NULL)
194 return (kif);
197 if ((kif = malloc(sizeof(*kif), PFI_MTYPE, M_NOWAIT|M_ZERO)) == NULL)
200 strlcpy(kif->pfik_name, kif_name, sizeof(kif->pfik_name));
203 kif->pfik_tzero = (time_second > 7200) ? time_second : 0;
205 kif->pfik_tzero = time_second;
207 TAILQ_INIT(&kif->pfik_dynaddrs);
209 RB_INSERT(pfi_ifhead, &pfi_ifs, kif);
210 return (kif);
214 pfi_kif_ref(struct pfi_kif *kif, enum pfi_kif_refs what)
218 kif->pfik_rules++;
221 kif->pfik_states++;
229 pfi_kif_unref(struct pfi_kif *kif, enum pfi_kif_refs what)
231 if (kif == NULL)
238 if (kif->pfik_rules <= 0) {
242 kif->pfik_rules--;
245 if (kif->pfik_states <= 0) {
249 kif->pfik_states--;
255 if (kif->pfik_ifp != NULL || kif->pfik_group != NULL || kif == pfi_all)
258 if (kif->pfik_rules || kif->pfik_states)
261 RB_REMOVE(pfi_ifhead, &pfi_ifs, kif);
262 free(kif, PFI_MTYPE);
288 struct pfi_kif *kif;
294 if ((kif = pfi_kif_get(ifp->if_xname)) == NULL)
297 kif->pfik_ifp = ifp;
298 ifp->if_pf_kif = kif;
301 if ((kif->pfik_ah_cookie = hook_establish(ifp->if_addrhooks, 1,
302 pfi_kifaddr_update, kif)) == NULL)
307 pfi_kif_update(kif);
316 struct pfi_kif *kif;
318 if ((kif = (struct pfi_kif *)ifp->if_pf_kif) == NULL)
324 hook_disestablish(ifp->if_addrhooks, kif->pfik_ah_cookie);
326 pfi_kif_update(kif);
328 kif->pfik_ifp = NULL;
330 pfi_kif_unref(kif, PFI_KIF_REF_NONE);
337 struct pfi_kif *kif;
343 if ((kif = pfi_kif_get(ifg->ifg_group)) == NULL)
346 kif->pfik_group = ifg;
347 ifg->ifg_pf_kif = kif;
356 struct pfi_kif *kif;
358 if ((kif = (struct pfi_kif *)ifg->ifg_pf_kif) == NULL)
364 kif->pfik_group = NULL;
366 pfi_kif_unref(kif, PFI_KIF_REF_NONE);
373 struct pfi_kif *kif;
378 if ((kif = pfi_kif_get(group)) == NULL)
381 pfi_kif_update(kif);
494 pfi_kif_update(struct pfi_kif *kif)
500 TAILQ_FOREACH(p, &kif->pfik_dynaddrs, entry)
503 /* again for all groups kif is member of */
504 if (kif->pfik_ifp != NULL) {
505 struct ifg_list_head *ifgh = if_get_groups(kif->pfik_ifp);
516 struct pfi_kif *kif;
522 kif = dyn->pfid_kif;
527 pfi_table_update(kt, kif, dyn->pfid_net, dyn->pfid_iflags);
534 pfi_table_update(struct pfr_ktable *kt, struct pfi_kif *kif, int net, int flags)
541 if (kif->pfik_ifp != NULL)
542 pfi_instance_add(kif->pfik_ifp, net, flags);
543 else if (kif->pfik_group != NULL)
544 TAILQ_FOREACH(ifgm, &kif->pfik_group->ifg_members, ifgm_next)
692 struct pfi_kif *kif = (struct pfi_kif *)v;
696 pfi_kif_update(kif);