Lines Matching refs:sp

113 	struct sockparams *sp = ksp->ks_private;  in sockparams_kstat_update()  local
119 sps->sps_nactive.value.ui64 = sp->sp_refcnt; in sockparams_kstat_update()
128 sockparams_kstat_init(struct sockparams *sp) in sockparams_kstat_init() argument
132 (void) snprintf(name, KSTAT_STRLEN, "socket_%d_%d_%d", sp->sp_family, in sockparams_kstat_init()
133 sp->sp_type, sp->sp_protocol); in sockparams_kstat_init()
135 sp->sp_kstat = kstat_create("sockfs", 0, name, "misc", KSTAT_TYPE_NAMED, in sockparams_kstat_init()
139 if (sp->sp_kstat == NULL) in sockparams_kstat_init()
142 sp->sp_kstat->ks_data = &sp->sp_stats; in sockparams_kstat_init()
143 sp->sp_kstat->ks_update = sockparams_kstat_update; in sockparams_kstat_init()
144 sp->sp_kstat->ks_private = sp; in sockparams_kstat_init()
145 kstat_install(sp->sp_kstat); in sockparams_kstat_init()
149 sockparams_kstat_fini(struct sockparams *sp) in sockparams_kstat_fini() argument
151 if (sp->sp_kstat != NULL) { in sockparams_kstat_fini()
152 kstat_delete(sp->sp_kstat); in sockparams_kstat_fini()
153 sp->sp_kstat = NULL; in sockparams_kstat_fini()
190 struct sockparams *sp = NULL; in sockparams_create() local
205 sp = kmem_zalloc(sizeof (*sp), kmflags); in sockparams_create()
206 if (sp == NULL) { in sockparams_create()
210 sp->sp_family = family; in sockparams_create()
211 sp->sp_type = type; in sockparams_create()
212 sp->sp_protocol = protocol; in sockparams_create()
213 sp->sp_refcnt = 0; in sockparams_create()
214 sp->sp_flags = flags; in sockparams_create()
216 list_create(&sp->sp_auto_filters, sizeof (sp_filter_t), in sockparams_create()
218 list_create(&sp->sp_prog_filters, sizeof (sp_filter_t), in sockparams_create()
221 kstat_named_init(&sp->sp_stats.sps_nfallback, "nfallback", in sockparams_create()
223 kstat_named_init(&sp->sp_stats.sps_nactive, "nactive", in sockparams_create()
225 kstat_named_init(&sp->sp_stats.sps_ncreate, "ncreate", in sockparams_create()
231 if (sp->sp_flags & SOCKPARAMS_EPHEMERAL) in sockparams_create()
235 sp->sp_smod_name = modname; in sockparams_create()
243 sp->sp_smod_name = modname; in sockparams_create()
244 (void) sprintf(sp->sp_smod_name, "%s", SOTPI_SMOD_NAME); in sockparams_create()
249 *errorp = sockparams_sdev_init(sp, devpath, devpathlen); in sockparams_create()
254 mutex_init(&sp->sp_lock, NULL, MUTEX_DEFAULT, NULL); in sockparams_create()
256 return (sp); in sockparams_create()
263 if (sp != NULL) in sockparams_create()
264 kmem_free(sp, sizeof (*sp)); in sockparams_create()
272 sockparams_sdev_init(struct sockparams *sp, char *devpath, int devpathlen) in sockparams_sdev_init() argument
286 sp->sp_sdev_info.sd_vnode = vp; in sockparams_sdev_init()
287 sp->sp_sdev_info.sd_devpath = devpath; in sockparams_sdev_init()
288 sp->sp_sdev_info.sd_devpathlen = devpathlen; in sockparams_sdev_init()
309 sockparams_destroy(struct sockparams *sp) in sockparams_destroy() argument
311 ASSERT(sp->sp_refcnt == 0); in sockparams_destroy()
312 ASSERT(!list_link_active(&sp->sp_node)); in sockparams_destroy()
314 sockparams_sdev_fini(sp); in sockparams_destroy()
316 if (sp->sp_smod_info != NULL) in sockparams_destroy()
317 SMOD_DEC_REF(sp->sp_smod_info, sp->sp_smod_name); in sockparams_destroy()
318 kmem_free(sp->sp_smod_name, strlen(sp->sp_smod_name) + 1); in sockparams_destroy()
319 sp->sp_smod_name = NULL; in sockparams_destroy()
320 sp->sp_smod_info = NULL; in sockparams_destroy()
321 mutex_destroy(&sp->sp_lock); in sockparams_destroy()
322 sockparams_kstat_fini(sp); in sockparams_destroy()
324 sof_sockparams_fini(sp); in sockparams_destroy()
325 list_destroy(&sp->sp_auto_filters); in sockparams_destroy()
326 list_destroy(&sp->sp_prog_filters); in sockparams_destroy()
328 kmem_free(sp, sizeof (*sp)); in sockparams_destroy()
335 sockparams_sdev_fini(struct sockparams *sp) in sockparams_sdev_fini() argument
343 if (!SOCKPARAMS_HAS_DEVICE(sp)) in sockparams_sdev_fini()
346 sd = sp->sp_sdev_info; in sockparams_sdev_fini()
352 sp->sp_sdev_info.sd_vnode = NULL; in sockparams_sdev_fini()
353 sp->sp_sdev_info.sd_devpath = NULL; in sockparams_sdev_fini()
364 struct sockparams *sp; in sockparams_find() local
366 for (sp = list_head(list); sp != NULL; sp = list_next(list, sp)) { in sockparams_find()
367 if (sp->sp_family == family && sp->sp_type == type) { in sockparams_find()
368 if (sp->sp_protocol == protocol) { in sockparams_find()
372 sp->sp_sdev_info.sd_devpath != NULL && in sockparams_find()
373 strcmp(sp->sp_sdev_info.sd_devpath, in sockparams_find()
376 else if (strcmp(sp->sp_smod_name, name) == 0) in sockparams_find()
381 return (sp); in sockparams_find()
404 struct sockparams *sp = NULL; in sockparams_hold_ephemeral() local
411 sp = sockparams_find(&sp_ephem_list, family, type, protocol, in sockparams_hold_ephemeral()
413 if (sp != NULL) { in sockparams_hold_ephemeral()
414 SOCKPARAMS_INC_REF(sp); in sockparams_hold_ephemeral()
418 return (sp); in sockparams_hold_ephemeral()
467 sp = sockparams_find(&sp_ephem_list, family, type, protocol, in sockparams_hold_ephemeral()
469 if (sp != NULL) { in sockparams_hold_ephemeral()
474 SOCKPARAMS_INC_REF(sp); in sockparams_hold_ephemeral()
489 sp = newsp; in sockparams_hold_ephemeral()
493 return (sp); in sockparams_hold_ephemeral()
521 sockparams_ephemeral_drop_last_ref(struct sockparams *sp) in sockparams_ephemeral_drop_last_ref() argument
523 ASSERT(sp->sp_flags & SOCKPARAMS_EPHEMERAL); in sockparams_ephemeral_drop_last_ref()
524 ASSERT(MUTEX_NOT_HELD(&sp->sp_lock)); in sockparams_ephemeral_drop_last_ref()
527 mutex_enter(&sp->sp_lock); in sockparams_ephemeral_drop_last_ref()
529 if (--sp->sp_refcnt == 0) { in sockparams_ephemeral_drop_last_ref()
530 list_remove(&sp_ephem_list, sp); in sockparams_ephemeral_drop_last_ref()
531 mutex_exit(&sp->sp_lock); in sockparams_ephemeral_drop_last_ref()
534 sockparams_destroy(sp); in sockparams_ephemeral_drop_last_ref()
536 mutex_exit(&sp->sp_lock); in sockparams_ephemeral_drop_last_ref()
557 sockparams_add(struct sockparams *sp) in sockparams_add() argument
561 ASSERT(!(sp->sp_flags & SOCKPARAMS_EPHEMERAL)); in sockparams_add()
564 if (sockparams_find(&sphead, sp->sp_family, sp->sp_type, in sockparams_add()
565 sp->sp_protocol, B_TRUE, NULL) != 0) { in sockparams_add()
572 sockparams_kstat_init(sp); in sockparams_add()
578 error = sof_sockparams_init(sp); in sockparams_add()
583 list_insert_tail(&sphead, sp); in sockparams_add()
609 struct sockparams *sp; in sockparams_delete() local
612 sp = sockparams_find(&sphead, family, type, protocol, B_TRUE, NULL); in sockparams_delete()
614 if (sp != NULL) { in sockparams_delete()
620 mutex_enter(&sp->sp_lock); in sockparams_delete()
621 if (sp->sp_refcnt != 0) { in sockparams_delete()
622 mutex_exit(&sp->sp_lock); in sockparams_delete()
626 mutex_exit(&sp->sp_lock); in sockparams_delete()
628 list_remove(&sphead, sp); in sockparams_delete()
631 sockparams_destroy(sp); in sockparams_delete()
665 struct sockparams *sp = NULL; in solookup() local
679 sp = sockparams_find(&sphead, family, type, protocol, B_TRUE, NULL); in solookup()
681 if (sp == NULL) { in solookup()
685 for (sp = list_head(&sphead); sp != NULL; in solookup()
686 sp = list_next(&sphead, sp)) { in solookup()
687 if (sp->sp_family == family && found < 1) in solookup()
689 if (sp->sp_family == family && in solookup()
690 sp->sp_protocol == protocol && found < 2) in solookup()
718 SOCKPARAMS_INC_REF(sp); in solookup()
721 if (sp->sp_smod_info == NULL) { in solookup()
722 smod_info_t *smod = smod_lookup_byname(sp->sp_smod_name); in solookup()
731 SOCKPARAMS_DEC_REF(sp); in solookup()
746 mutex_enter(&sp->sp_lock); in solookup()
747 if (sp->sp_smod_info == NULL) in solookup()
748 sp->sp_smod_info = smod; in solookup()
750 SMOD_DEC_REF(smod, sp->sp_smod_name); in solookup()
751 mutex_exit(&sp->sp_lock); in solookup()
757 *spp = sp; in solookup()
768 struct sockparams *sp; in sockparams_filter_cleanup_impl() local
774 for (sp = list_head(list); sp != NULL; in sockparams_filter_cleanup_impl()
775 sp = list_next(list, sp)) { in sockparams_filter_cleanup_impl()
777 &sp->sp_auto_filters : &sp->sp_prog_filters; in sockparams_filter_cleanup_impl()
802 struct sockparams *sp; in sockparams_new_filter_impl() local
807 for (sp = list_head(list); sp != NULL; in sockparams_new_filter_impl()
808 sp = list_next(list, sp)) { in sockparams_new_filter_impl()
809 if ((err = sof_entry_proc_sockparams(ent, sp)) != 0) { in sockparams_new_filter_impl()
837 struct sockparams *sp; in sockparams_copyout_socktable() local
855 for (sp = list_head(&sphead); sp != NULL; in sockparams_copyout_socktable()
856 sp = list_next(&sphead, sp)) { in sockparams_copyout_socktable()
871 for (sp = list_head(&sphead); sp != NULL; in sockparams_copyout_socktable()
872 sp = list_next(&sphead, sp)) { in sockparams_copyout_socktable()
882 se[i].se_family = sp->sp_family; in sockparams_copyout_socktable()
883 se[i].se_type = sp->sp_type; in sockparams_copyout_socktable()
884 se[i].se_protocol = sp->sp_protocol; in sockparams_copyout_socktable()
885 (void) strncpy(se[i].se_modname, sp->sp_smod_name, in sockparams_copyout_socktable()
887 if (sp->sp_sdev_info.sd_devpath != NULL) in sockparams_copyout_socktable()
889 sp->sp_sdev_info.sd_devpath, MAXPATHLEN); in sockparams_copyout_socktable()
890 se[i].se_refcnt = sp->sp_refcnt; in sockparams_copyout_socktable()
891 se[i].se_flags = sp->sp_flags; in sockparams_copyout_socktable()