Lines Matching refs:rp
177 npf_rproc_t *rp, const nvlist_t *params)
184 if (rp->rp_ext_count >= RPROC_EXT_COUNT) {
202 error = extops->ctor(rp, params);
207 i = rp->rp_ext_count++;
208 rp->rp_ext[i] = ext;
229 npf_rproc_t *rp;
231 while ((rp = LIST_FIRST(&rpset->rps_list)) != NULL) {
232 LIST_REMOVE(rp, rp_entry);
233 npf_rproc_release(rp);
244 npf_rproc_t *rp;
246 LIST_FOREACH(rp, &rpset->rps_list, rp_entry) {
247 if (strncmp(rp->rp_name, name, RPROC_NAME_LEN) == 0)
250 return rp;
257 npf_rprocset_insert(npf_rprocset_t *rpset, npf_rproc_t *rp)
259 LIST_INSERT_HEAD(&rpset->rps_list, rp, rp_entry);
265 const npf_rproc_t *rp;
267 LIST_FOREACH(rp, &rpset->rps_list, rp_entry) {
270 for (unsigned i = 0; i < rp->rp_ext_count; i++) {
271 nvlist_t *meta = rp->rp_ext_meta[i];
276 nvlist_add_string(rproc, "name", rp->rp_name);
277 nvlist_add_number(rproc, "flags", rp->rp_flags);
292 npf_rproc_t *rp;
298 rp = kmem_intr_zalloc(sizeof(npf_rproc_t), KM_SLEEP);
299 rp->rp_refcnt = 1;
301 strlcpy(rp->rp_name, name, RPROC_NAME_LEN);
302 rp->rp_flags = dnvlist_get_number(rproc, "flags", 0);
303 return rp;
310 npf_rproc_acquire(npf_rproc_t *rp)
312 atomic_inc_uint(&rp->rp_refcnt);
319 npf_rproc_getname(const npf_rproc_t *rp)
321 return rp->rp_name;
329 npf_rproc_release(npf_rproc_t *rp)
331 KASSERT(atomic_load_relaxed(&rp->rp_refcnt) > 0);
334 if (atomic_dec_uint_nv(&rp->rp_refcnt) != 0) {
340 for (unsigned i = 0; i < rp->rp_ext_count; i++) {
341 npf_ext_t *ext = rp->rp_ext[i];
344 extops->dtor(rp, rp->rp_ext_meta[i]);
347 kmem_intr_free(rp, sizeof(npf_rproc_t));
351 npf_rproc_assign(npf_rproc_t *rp, void *params)
353 unsigned i = rp->rp_ext_count;
357 rp->rp_ext_meta[i] = params;
366 npf_rproc_run(npf_cache_t *npc, npf_rproc_t *rp, const npf_match_info_t *mi,
369 const unsigned extcount = rp->rp_ext_count;
372 KASSERT(atomic_load_relaxed(&rp->rp_refcnt) > 0);
375 const npf_ext_t *ext = rp->rp_ext[i];
380 if (!extops->proc(npc, rp->rp_ext_meta[i], mi, decision)) {