Lines Matching refs:shr

208 smb_kshare_hostaccess(smb_kshare_t *shr, smb_session_t *session)  in smb_kshare_hostaccess()  argument
219 if ((shr->shr_access_none == NULL || *shr->shr_access_none == '\0') && in smb_kshare_hostaccess()
220 (shr->shr_access_ro == NULL || *shr->shr_access_ro == '\0') && in smb_kshare_hostaccess()
221 (shr->shr_access_rw == NULL || *shr->shr_access_rw == '\0')) in smb_kshare_hostaccess()
224 if (shr->shr_access_none != NULL) in smb_kshare_hostaccess()
226 if (shr->shr_access_ro != NULL) in smb_kshare_hostaccess()
228 if (shr->shr_access_rw != NULL) in smb_kshare_hostaccess()
231 req.shq_none = shr->shr_access_none; in smb_kshare_hostaccess()
232 req.shq_ro = shr->shr_access_ro; in smb_kshare_hostaccess()
233 req.shq_rw = shr->shr_access_rw; in smb_kshare_hostaccess()
366 smb_kshare_t *shr; in smb_kshare_export_list() local
380 if ((ioc->shrlen + offsetof(smb_ioc_share_t, shr)) > ioc->hdr.len) { in smb_kshare_export_list()
384 rc = nvlist_unpack(ioc->shr, ioc->shrlen, &shrlist, KM_SLEEP); in smb_kshare_export_list()
411 if ((shr = smb_kshare_decode(share)) == NULL) { in smb_kshare_export_list()
418 if ((rc = smb_kshare_export(sv, shr)) != 0) { in smb_kshare_export_list()
419 smb_kshare_destroy(shr); in smb_kshare_export_list()
461 if ((ioc->shrlen + offsetof(smb_ioc_share_t, shr)) > ioc->hdr.len) { in smb_kshare_unexport_list()
465 if ((rc = nvlist_unpack(ioc->shr, ioc->shrlen, &shrlist, 0)) != 0) in smb_kshare_unexport_list()
521 smb_kshare_t *shr = NULL; in smb_kshare_access() local
526 shr = smb_kshare_lookup(sv, ioc->shrname); in smb_kshare_access()
527 if (shr == NULL) { in smb_kshare_access()
531 if ((shroot = shr->shr_root_node) == NULL) { in smb_kshare_access()
552 if (shr != NULL) in smb_kshare_access()
553 smb_kshare_release(sv, shr); in smb_kshare_access()
576 smb_kshare_t *shr; in smb_kshare_enum() local
600 while ((shr = smb_avl_iterate(share_avl, &cursor)) != NULL) { in smb_kshare_enum()
601 if (shr->shr_oemname == NULL) { in smb_kshare_enum()
602 smb_avl_release(share_avl, shr); in smb_kshare_enum()
606 if ((shr->shr_flags & SMB_SHRF_AUTOHOME) && !autohome_added) { in smb_kshare_enum()
607 if (esi->es_posix_uid == shr->shr_uid) { in smb_kshare_enum()
610 smb_avl_release(share_avl, shr); in smb_kshare_enum()
618 smb_avl_release(share_avl, shr); in smb_kshare_enum()
622 clen = strlen(shr->shr_cmnt) + 1; in smb_kshare_enum()
631 smb_avl_release(share_avl, shr); in smb_kshare_enum()
644 while ((shr = smb_avl_iterate(share_avl, &cursor)) != NULL) { in smb_kshare_enum()
645 if (shr->shr_oemname == NULL) { in smb_kshare_enum()
646 smb_avl_release(share_avl, shr); in smb_kshare_enum()
650 if ((shr->shr_flags & SMB_SHRF_AUTOHOME) && !autohome_added) { in smb_kshare_enum()
651 if (esi->es_posix_uid == shr->shr_uid) { in smb_kshare_enum()
654 smb_avl_release(share_avl, shr); in smb_kshare_enum()
660 shr->shr_oemname, shr->shr_type, cmnt_offs) < 0) { in smb_kshare_enum()
661 smb_avl_release(share_avl, shr); in smb_kshare_enum()
665 if (smb_msgbuf_encode(&cmnt_mb, "s", shr->shr_cmnt) < 0) { in smb_kshare_enum()
666 smb_avl_release(share_avl, shr); in smb_kshare_enum()
670 cmnt_offs += strlen(shr->shr_cmnt) + 1; in smb_kshare_enum()
673 smb_avl_release(share_avl, shr); in smb_kshare_enum()
691 smb_kshare_t *shr; in smb_kshare_lookup() local
699 shr = smb_avl_lookup(&sv->sv_export.e_share_avl, &key); in smb_kshare_lookup()
700 return (shr); in smb_kshare_lookup()
707 smb_kshare_release(smb_server_t *sv, smb_kshare_t *shr) in smb_kshare_release() argument
709 ASSERT(shr); in smb_kshare_release()
710 ASSERT(shr->shr_magic == SMB_SHARE_MAGIC); in smb_kshare_release()
712 smb_avl_release(&sv->sv_export.e_share_avl, shr); in smb_kshare_release()
725 smb_kshare_export(smb_server_t *sv, smb_kshare_t *shr) in smb_kshare_export() argument
734 if (!STYPE_ISDSK(shr->shr_type)) { in smb_kshare_export()
735 if ((rc = smb_avl_add(share_avl, shr)) != 0) { in smb_kshare_export()
737 shr->shr_name, rc); in smb_kshare_export()
743 if ((auto_shr = smb_avl_lookup(share_avl, shr)) != NULL) { in smb_kshare_export()
760 rc = smb_server_share_lookup(sv, shr->shr_path, &snode); in smb_kshare_export()
763 shr->shr_name, shr->shr_path, rc); in smb_kshare_export()
767 shr->shr_root_node = snode; in smb_kshare_export()
768 if ((rc = smb_avl_add(share_avl, shr)) != 0) { in smb_kshare_export()
770 shr->shr_name, rc); in smb_kshare_export()
771 shr->shr_root_node = NULL; in smb_kshare_export()
780 if ((shr->shr_flags & SMB_SHRF_CA) != 0) { in smb_kshare_export()
781 rc = smb2_dh_new_ca_share(sv, shr); in smb_kshare_export()
784 mutex_enter(&shr->shr_mutex); in smb_kshare_export()
785 shr->shr_flags &= ~SMB_SHRF_CA; in smb_kshare_export()
786 mutex_exit(&shr->shr_mutex); in smb_kshare_export()
811 smb_kshare_t *shr; in smb_kshare_unexport() local
817 if ((shr = smb_avl_lookup(share_avl, &key)) == NULL) in smb_kshare_unexport()
820 if ((shr->shr_flags & SMB_SHRF_AUTOHOME) != 0) { in smb_kshare_unexport()
821 mutex_enter(&shr->shr_mutex); in smb_kshare_unexport()
822 shr->shr_autocnt--; in smb_kshare_unexport()
823 auto_unexport = (shr->shr_autocnt == 0); in smb_kshare_unexport()
824 mutex_exit(&shr->shr_mutex); in smb_kshare_unexport()
826 smb_avl_release(share_avl, shr); in smb_kshare_unexport()
831 smb_avl_remove(share_avl, shr); in smb_kshare_unexport()
833 mutex_enter(&shr->shr_mutex); in smb_kshare_unexport()
834 shr->shr_flags |= SMB_SHRF_REMOVED; in smb_kshare_unexport()
835 mutex_exit(&shr->shr_mutex); in smb_kshare_unexport()
837 smb_avl_release(share_avl, shr); in smb_kshare_unexport()
848 smb_kshare_t *shr; in smb_kshare_export_trans() local
853 shr = kmem_cache_alloc(smb_kshare_cache_share, KM_SLEEP); in smb_kshare_export_trans()
854 bzero(shr, sizeof (smb_kshare_t)); in smb_kshare_export_trans()
856 shr->shr_magic = SMB_SHARE_MAGIC; in smb_kshare_export_trans()
857 shr->shr_refcnt = 1; in smb_kshare_export_trans()
858 shr->shr_flags = SMB_SHRF_TRANS | smb_kshare_is_admin(name); in smb_kshare_export_trans()
860 shr->shr_type = STYPE_IPC; in smb_kshare_export_trans()
862 shr->shr_type = STYPE_DISKTREE; in smb_kshare_export_trans()
864 shr->shr_type |= smb_kshare_is_special(name); in smb_kshare_export_trans()
866 shr->shr_name = smb_mem_strdup(name); in smb_kshare_export_trans()
868 shr->shr_path = smb_mem_strdup(path); in smb_kshare_export_trans()
870 shr->shr_cmnt = smb_mem_strdup(cmnt); in smb_kshare_export_trans()
871 shr->shr_oemname = smb_kshare_oemname(name); in smb_kshare_export_trans()
873 return (smb_kshare_export(sv, shr)); in smb_kshare_export_trans()
887 smb_kshare_t *shr; in smb_kshare_decode() local
952 shr = kmem_cache_alloc(smb_kshare_cache_share, KM_SLEEP); in smb_kshare_decode()
953 bzero(shr, sizeof (smb_kshare_t)); in smb_kshare_decode()
955 shr->shr_magic = SMB_SHARE_MAGIC; in smb_kshare_decode()
956 shr->shr_refcnt = 1; in smb_kshare_decode()
958 shr->shr_name = smb_mem_strdup(tmp.shr_name); in smb_kshare_decode()
959 shr->shr_path = smb_mem_strdup(tmp.shr_path); in smb_kshare_decode()
961 shr->shr_cmnt = smb_mem_strdup(tmp.shr_cmnt); in smb_kshare_decode()
963 shr->shr_container = smb_mem_strdup(tmp.shr_container); in smb_kshare_decode()
965 shr->shr_access_none = smb_mem_strdup(tmp.shr_access_none); in smb_kshare_decode()
967 shr->shr_access_ro = smb_mem_strdup(tmp.shr_access_ro); in smb_kshare_decode()
969 shr->shr_access_rw = smb_mem_strdup(tmp.shr_access_rw); in smb_kshare_decode()
971 shr->shr_oemname = smb_kshare_oemname(shr->shr_name); in smb_kshare_decode()
972 shr->shr_flags = tmp.shr_flags | smb_kshare_is_admin(shr->shr_name); in smb_kshare_decode()
973 shr->shr_type = tmp.shr_type | smb_kshare_is_special(shr->shr_name); in smb_kshare_decode()
974 shr->shr_encrypt = tmp.shr_encrypt; in smb_kshare_decode()
976 shr->shr_uid = tmp.shr_uid; in smb_kshare_decode()
977 shr->shr_gid = tmp.shr_gid; in smb_kshare_decode()
979 if ((shr->shr_flags & SMB_SHRF_AUTOHOME) == SMB_SHRF_AUTOHOME) in smb_kshare_decode()
980 shr->shr_autocnt = 1; in smb_kshare_decode()
982 return (shr); in smb_kshare_decode()
987 smb_kshare_log(smb_kshare_t *shr)
990 cmn_err(CE_NOTE, "\tname: %s", (shr->shr_name) ? shr->shr_name : "");
991 cmn_err(CE_NOTE, "\tpath: %s", (shr->shr_path) ? shr->shr_path : "");
993 (shr->shr_cmnt) ? shr->shr_cmnt : "NULL");
995 (shr->shr_oemname) ? shr->shr_oemname : "NULL");
996 cmn_err(CE_NOTE, "\tflags: %X", shr->shr_flags);
997 cmn_err(CE_NOTE, "\ttype: %d", shr->shr_type);
1036 smb_kshare_t *shr = (smb_kshare_t *)p; in smb_kshare_hold() local
1038 ASSERT(shr); in smb_kshare_hold()
1039 ASSERT(shr->shr_magic == SMB_SHARE_MAGIC); in smb_kshare_hold()
1041 mutex_enter(&shr->shr_mutex); in smb_kshare_hold()
1042 shr->shr_refcnt++; in smb_kshare_hold()
1043 mutex_exit(&shr->shr_mutex); in smb_kshare_hold()
1053 smb_kshare_t *shr = (smb_kshare_t *)p; in smb_kshare_rele() local
1056 ASSERT(shr); in smb_kshare_rele()
1057 ASSERT(shr->shr_magic == SMB_SHARE_MAGIC); in smb_kshare_rele()
1059 mutex_enter(&shr->shr_mutex); in smb_kshare_rele()
1060 ASSERT(shr->shr_refcnt > 0); in smb_kshare_rele()
1061 shr->shr_refcnt--; in smb_kshare_rele()
1062 destroy = (shr->shr_refcnt == 0); in smb_kshare_rele()
1063 mutex_exit(&shr->shr_mutex); in smb_kshare_rele()
1076 smb_kshare_t *shr = (smb_kshare_t *)p; in smb_kshare_destroy() local
1078 ASSERT(shr); in smb_kshare_destroy()
1079 ASSERT(shr->shr_magic == SMB_SHARE_MAGIC); in smb_kshare_destroy()
1081 if (shr->shr_ca_dir != NULL) in smb_kshare_destroy()
1082 smb_node_release(shr->shr_ca_dir); in smb_kshare_destroy()
1083 if (shr->shr_root_node) in smb_kshare_destroy()
1084 smb_node_release(shr->shr_root_node); in smb_kshare_destroy()
1086 smb_mem_free(shr->shr_name); in smb_kshare_destroy()
1087 smb_mem_free(shr->shr_path); in smb_kshare_destroy()
1088 smb_mem_free(shr->shr_cmnt); in smb_kshare_destroy()
1089 smb_mem_free(shr->shr_container); in smb_kshare_destroy()
1090 smb_mem_free(shr->shr_oemname); in smb_kshare_destroy()
1091 smb_mem_free(shr->shr_access_none); in smb_kshare_destroy()
1092 smb_mem_free(shr->shr_access_ro); in smb_kshare_destroy()
1093 smb_mem_free(shr->shr_access_rw); in smb_kshare_destroy()
1095 kmem_cache_free(smb_kshare_cache_share, shr); in smb_kshare_destroy()
1198 smb_kshare_csc_flags(smb_kshare_t *shr, const char *value) in smb_kshare_csc_flags() argument
1216 shr->shr_flags |= cscopt[i].flag; in smb_kshare_csc_flags()
1221 switch (shr->shr_flags & SMB_SHRF_CSC_MASK) { in smb_kshare_csc_flags()
1231 shr->shr_flags & SMB_SHRF_CSC_MASK); in smb_kshare_csc_flags()