1/* SPDX-License-Identifier: GPL-2.0-or-later */
2/*
3 *   Copyright (C) 2018 Samsung Electronics Co., Ltd.
4 */
5
6#ifndef __USER_CONFIG_MANAGEMENT_H__
7#define __USER_CONFIG_MANAGEMENT_H__
8
9#include "../glob.h"
10
11struct ksmbd_user {
12	unsigned short		flags;
13
14	unsigned int		uid;
15	unsigned int		gid;
16
17	char			*name;
18
19	size_t			passkey_sz;
20	char			*passkey;
21};
22
23static inline bool user_guest(struct ksmbd_user *user)
24{
25	return user->flags & KSMBD_USER_FLAG_GUEST_ACCOUNT;
26}
27
28static inline void set_user_flag(struct ksmbd_user *user, int flag)
29{
30	user->flags |= flag;
31}
32
33static inline int test_user_flag(struct ksmbd_user *user, int flag)
34{
35	return user->flags & flag;
36}
37
38static inline void set_user_guest(struct ksmbd_user *user)
39{
40}
41
42static inline char *user_passkey(struct ksmbd_user *user)
43{
44	return user->passkey;
45}
46
47static inline char *user_name(struct ksmbd_user *user)
48{
49	return user->name;
50}
51
52static inline unsigned int user_uid(struct ksmbd_user *user)
53{
54	return user->uid;
55}
56
57static inline unsigned int user_gid(struct ksmbd_user *user)
58{
59	return user->gid;
60}
61
62struct ksmbd_user *ksmbd_login_user(const char *account);
63struct ksmbd_user *ksmbd_alloc_user(struct ksmbd_login_response *resp);
64void ksmbd_free_user(struct ksmbd_user *user);
65int ksmbd_anonymous_user(struct ksmbd_user *user);
66bool ksmbd_compare_user(struct ksmbd_user *u1, struct ksmbd_user *u2);
67#endif /* __USER_CONFIG_MANAGEMENT_H__ */
68