Lines Matching refs:user

238 	smb_user_t	*user;  in smb_user_new()  local
245 user = kmem_cache_alloc(smb_cache_user, KM_SLEEP); in smb_user_new()
246 gen = (user->u_ssnid + 1) & 7; in smb_user_new()
247 bzero(user, sizeof (smb_user_t)); in smb_user_new()
249 user->u_refcnt = 1; in smb_user_new()
250 user->u_session = session; in smb_user_new()
251 user->u_server = session->s_server; in smb_user_new()
252 user->u_logon_time = gethrestime_sec(); in smb_user_new()
254 if (smb_idpool_alloc(&session->s_uid_pool, &user->u_uid)) in smb_user_new()
256 user->u_ssnid = SMB_USER_SSNID(user) + gen; in smb_user_new()
258 mutex_init(&user->u_mutex, NULL, MUTEX_DEFAULT, NULL); in smb_user_new()
259 user->u_state = SMB_USER_STATE_LOGGING_ON; in smb_user_new()
260 user->u_magic = SMB_USER_MAGIC; in smb_user_new()
264 smb_llist_insert_tail(&session->s_user_list, user); in smb_user_new()
284 return (user); in smb_user_new()
287 if (user->u_uid != 0) in smb_user_new()
288 smb_idpool_free(&session->s_uid_pool, user->u_uid); in smb_user_new()
289 kmem_cache_free(smb_cache_user, user); in smb_user_new()
299 smb_user_t *user, in smb_user_logon() argument
310 ASSERT(user->u_magic == SMB_USER_MAGIC); in smb_user_logon()
315 mutex_enter(&user->u_mutex); in smb_user_logon()
317 if (user->u_state != SMB_USER_STATE_LOGGING_ON) { in smb_user_logon()
318 mutex_exit(&user->u_mutex); in smb_user_logon()
326 authsock = user->u_authsock; in smb_user_logon()
327 user->u_authsock = NULL; in smb_user_logon()
328 tmo = user->u_auth_tmo; in smb_user_logon()
329 user->u_auth_tmo = NULL; in smb_user_logon()
331 user->u_state = SMB_USER_STATE_LOGGED_ON; in smb_user_logon()
332 user->u_flags = flags; in smb_user_logon()
333 user->u_name_len = strlen(account_name) + 1; in smb_user_logon()
334 user->u_domain_len = strlen(domain_name) + 1; in smb_user_logon()
335 user->u_name = smb_mem_strdup(account_name); in smb_user_logon()
336 user->u_domain = smb_mem_strdup(domain_name); in smb_user_logon()
337 user->u_audit_sid = audit_sid; in smb_user_logon()
339 smb_user_setcred(user, cr, privileges); in smb_user_logon()
341 mutex_exit(&user->u_mutex); in smb_user_logon()
349 smb_authsock_close(user, authsock); in smb_user_logon()
365 smb_user_t *user) in smb_user_logoff() argument
370 ASSERT(user->u_magic == SMB_USER_MAGIC); in smb_user_logoff()
372 mutex_enter(&user->u_mutex); in smb_user_logoff()
373 ASSERT(user->u_refcnt); in smb_user_logoff()
374 switch (user->u_state) { in smb_user_logoff()
376 authsock = user->u_authsock; in smb_user_logoff()
377 user->u_authsock = NULL; in smb_user_logoff()
378 tmo = user->u_auth_tmo; in smb_user_logoff()
379 user->u_auth_tmo = NULL; in smb_user_logoff()
380 user->u_state = SMB_USER_STATE_LOGGING_OFF; in smb_user_logoff()
381 mutex_exit(&user->u_mutex); in smb_user_logoff()
388 smb_authsock_close(user, authsock); in smb_user_logoff()
396 user->u_state = SMB_USER_STATE_LOGGING_OFF; in smb_user_logoff()
397 mutex_exit(&user->u_mutex); in smb_user_logoff()
398 smb_session_disconnect_owned_trees(user->u_session, user); in smb_user_logoff()
399 smb_user_auth_logoff(user); in smb_user_logoff()
404 mutex_exit(&user->u_mutex); in smb_user_logoff()
409 mutex_exit(&user->u_mutex); in smb_user_logoff()
419 smb_user_hold(smb_user_t *user) in smb_user_hold() argument
421 SMB_USER_VALID(user); in smb_user_hold()
423 mutex_enter(&user->u_mutex); in smb_user_hold()
425 if (user->u_state == SMB_USER_STATE_LOGGED_ON) { in smb_user_hold()
426 user->u_refcnt++; in smb_user_hold()
427 mutex_exit(&user->u_mutex); in smb_user_hold()
431 mutex_exit(&user->u_mutex); in smb_user_hold()
439 smb_user_hold_internal(smb_user_t *user) in smb_user_hold_internal() argument
441 SMB_USER_VALID(user); in smb_user_hold_internal()
443 mutex_enter(&user->u_mutex); in smb_user_hold_internal()
444 user->u_refcnt++; in smb_user_hold_internal()
445 mutex_exit(&user->u_mutex); in smb_user_hold_internal()
456 smb_user_t *user) in smb_user_release() argument
458 smb_session_t *ssn = user->u_session; in smb_user_release()
460 SMB_USER_VALID(user); in smb_user_release()
465 mutex_enter(&user->u_mutex); in smb_user_release()
466 ASSERT(user->u_refcnt); in smb_user_release()
467 user->u_refcnt--; in smb_user_release()
469 switch (user->u_state) { in smb_user_release()
471 if (user->u_refcnt == 0) { in smb_user_release()
472 smb_session_t *ssn = user->u_session; in smb_user_release()
473 user->u_state = SMB_USER_STATE_LOGGED_OFF; in smb_user_release()
474 smb_llist_post(&ssn->s_user_list, user, in smb_user_release()
488 mutex_exit(&user->u_mutex); in smb_user_release()
501 smb_user_t *user = arg; in smb_user_auth_tmo() local
505 SMB_USER_VALID(user); in smb_user_auth_tmo()
511 sr = smb_request_alloc(user->u_session, 0); in smb_user_auth_tmo()
519 mutex_enter(&user->u_mutex); in smb_user_auth_tmo()
520 if (user->u_state != SMB_USER_STATE_LOGGING_ON) { in smb_user_auth_tmo()
521 mutex_exit(&user->u_mutex); in smb_user_auth_tmo()
526 user->u_refcnt++; in smb_user_auth_tmo()
527 mutex_exit(&user->u_mutex); in smb_user_auth_tmo()
533 sr->uid_user = user; in smb_user_auth_tmo()
534 sr->user_cr = user->u_cred; in smb_user_auth_tmo()
537 user->u_server->sv_worker_pool, in smb_user_auth_tmo()
568 smb_user_is_admin(smb_user_t *user) in smb_user_is_admin() argument
579 ASSERT(user); in smb_user_is_admin()
580 ASSERT(user->u_cred); in smb_user_is_admin()
582 if (SMB_USER_IS_ADMIN(user)) in smb_user_is_admin()
590 ksidlist = crgetsidlist(user->u_cred); in smb_user_is_admin()
593 ksid = crgetsid(user->u_cred, KSID_USER); in smb_user_is_admin()
601 user->u_flags |= SMB_USER_FLAG_ADMIN; in smb_user_is_admin()
613 smb_user_namecmp(smb_user_t *user, const char *name) in smb_user_namecmp() argument
618 if (smb_strcasecmp(name, user->u_name, 0) == 0) in smb_user_namecmp()
624 user->u_domain, user->u_name); in smb_user_namecmp()
629 user->u_name, user->u_domain); in smb_user_namecmp()
645 smb_user_enum(smb_user_t *user, smb_svcenum_t *svcenum) in smb_user_enum() argument
649 ASSERT(user); in smb_user_enum()
650 ASSERT(user->u_magic == SMB_USER_MAGIC); in smb_user_enum()
653 return (smb_user_enum_private(user, svcenum)); in smb_user_enum()
663 smb_user_inc_trees(smb_user_t *user) in smb_user_inc_trees() argument
665 mutex_enter(&user->u_mutex); in smb_user_inc_trees()
666 user->u_owned_tree_cnt++; in smb_user_inc_trees()
667 mutex_exit(&user->u_mutex); in smb_user_inc_trees()
671 smb_user_dec_trees(smb_user_t *user) in smb_user_dec_trees() argument
673 mutex_enter(&user->u_mutex); in smb_user_dec_trees()
674 user->u_owned_tree_cnt--; in smb_user_dec_trees()
675 if (user->u_owned_tree_cnt == 0) in smb_user_dec_trees()
676 cv_broadcast(&user->u_owned_tree_cv); in smb_user_dec_trees()
677 mutex_exit(&user->u_mutex); in smb_user_dec_trees()
687 smb_user_wait_trees(smb_user_t *user) in smb_user_wait_trees() argument
692 mutex_enter(&user->u_mutex); in smb_user_wait_trees()
693 while (user->u_owned_tree_cnt != 0) { in smb_user_wait_trees()
694 if (cv_timedwait(&user->u_owned_tree_cv, in smb_user_wait_trees()
695 &user->u_mutex, time) < 0) in smb_user_wait_trees()
698 mutex_exit(&user->u_mutex); in smb_user_wait_trees()
699 if (user->u_owned_tree_cnt != 0) { in smb_user_wait_trees()
703 DTRACE_PROBE1(max__wait, smb_user_t *, user); in smb_user_wait_trees()
719 smb_user_t *user = (smb_user_t *)arg; in smb_user_delete() local
722 SMB_USER_VALID(user); in smb_user_delete()
723 ASSERT(user->u_refcnt == 0); in smb_user_delete()
724 ASSERT(user->u_state == SMB_USER_STATE_LOGGED_OFF); in smb_user_delete()
725 ASSERT(user->u_authsock == NULL); in smb_user_delete()
726 ASSERT(user->u_auth_tmo == NULL); in smb_user_delete()
728 session = user->u_session; in smb_user_delete()
732 smb_llist_remove(&session->s_user_list, user); in smb_user_delete()
733 smb_idpool_free(&session->s_uid_pool, user->u_uid); in smb_user_delete()
761 mutex_enter(&user->u_mutex); in smb_user_delete()
762 mutex_exit(&user->u_mutex); in smb_user_delete()
764 user->u_magic = (uint32_t)~SMB_USER_MAGIC; in smb_user_delete()
765 mutex_destroy(&user->u_mutex); in smb_user_delete()
766 if (user->u_cred) in smb_user_delete()
767 crfree(user->u_cred); in smb_user_delete()
768 if (user->u_privcred) in smb_user_delete()
769 crfree(user->u_privcred); in smb_user_delete()
770 smb_mem_free(user->u_name); in smb_user_delete()
771 smb_mem_free(user->u_domain); in smb_user_delete()
772 kmem_cache_free(smb_cache_user, user); in smb_user_delete()
776 smb_user_getcred(smb_user_t *user) in smb_user_getcred() argument
778 return (user->u_cred); in smb_user_getcred()
782 smb_user_getprivcred(smb_user_t *user) in smb_user_getprivcred() argument
784 return ((user->u_privcred)? user->u_privcred : user->u_cred); in smb_user_getprivcred()
795 smb_user_setcred(smb_user_t *user, cred_t *cr, uint32_t privileges) in smb_user_setcred() argument
871 user->u_cred = cr; in smb_user_setcred()
872 user->u_privcred = privcred; in smb_user_setcred()
873 user->u_privileges = privileges; in smb_user_setcred()
881 smb_user_has_security_priv(smb_user_t *user, cred_t *cr) in smb_user_has_security_priv() argument
884 if ((user->u_privileges & SMB_USER_PRIV_SECURITY) != 0) in smb_user_has_security_priv()
905 if ((user->u_privileges & in smb_user_has_security_priv()
920 smb_user_enum_private(smb_user_t *user, smb_svcenum_t *svcenum) in smb_user_enum_private() argument
937 rc = smb_user_netinfo_encode(user, pb, svcenum->se_bavail, &nbytes); in smb_user_enum_private()
953 smb_user_netinfo_encode(smb_user_t *user, uint8_t *buf, size_t buflen, in smb_user_netinfo_encode() argument
959 smb_user_netinfo_init(user, &info); in smb_user_netinfo_encode()
967 smb_user_netinfo_init(smb_user_t *user, smb_netuserinfo_t *info) in smb_user_netinfo_init() argument
972 ASSERT(user); in smb_user_netinfo_init()
973 ASSERT(user->u_domain); in smb_user_netinfo_init()
974 ASSERT(user->u_name); in smb_user_netinfo_init()
976 session = user->u_session; in smb_user_netinfo_init()
981 info->ui_user_id = user->u_ssnid; in smb_user_netinfo_init()
985 info->ui_logon_time = user->u_logon_time; in smb_user_netinfo_init()
986 info->ui_flags = user->u_flags; in smb_user_netinfo_init()
987 info->ui_posix_uid = crgetuid(user->u_cred); in smb_user_netinfo_init()
989 info->ui_domain_len = user->u_domain_len; in smb_user_netinfo_init()
990 info->ui_domain = smb_mem_strdup(user->u_domain); in smb_user_netinfo_init()
992 info->ui_account_len = user->u_name_len; in smb_user_netinfo_init()
993 info->ui_account = smb_mem_strdup(user->u_name); in smb_user_netinfo_init()
1029 smb_user_auth_logoff(smb_user_t *user) in smb_user_auth_logoff() argument
1031 smb_server_t *sv = user->u_server; in smb_user_auth_logoff()
1042 audit_sid = user->u_audit_sid; in smb_user_auth_logoff()