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 
11 struct 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 	int			ngroups;
22 	gid_t			*sgid;
23 };
24 
user_guest(struct ksmbd_user * user)25 static inline bool user_guest(struct ksmbd_user *user)
26 {
27 	return user->flags & KSMBD_USER_FLAG_GUEST_ACCOUNT;
28 }
29 
set_user_flag(struct ksmbd_user * user,int flag)30 static inline void set_user_flag(struct ksmbd_user *user, int flag)
31 {
32 	user->flags |= flag;
33 }
34 
test_user_flag(struct ksmbd_user * user,int flag)35 static inline int test_user_flag(struct ksmbd_user *user, int flag)
36 {
37 	return user->flags & flag;
38 }
39 
set_user_guest(struct ksmbd_user * user)40 static inline void set_user_guest(struct ksmbd_user *user)
41 {
42 }
43 
user_passkey(struct ksmbd_user * user)44 static inline char *user_passkey(struct ksmbd_user *user)
45 {
46 	return user->passkey;
47 }
48 
user_name(struct ksmbd_user * user)49 static inline char *user_name(struct ksmbd_user *user)
50 {
51 	return user->name;
52 }
53 
user_uid(struct ksmbd_user * user)54 static inline unsigned int user_uid(struct ksmbd_user *user)
55 {
56 	return user->uid;
57 }
58 
user_gid(struct ksmbd_user * user)59 static inline unsigned int user_gid(struct ksmbd_user *user)
60 {
61 	return user->gid;
62 }
63 
64 struct ksmbd_user *ksmbd_login_user(const char *account);
65 struct ksmbd_user *ksmbd_alloc_user(struct ksmbd_login_response *resp,
66 		struct ksmbd_login_response_ext *resp_ext);
67 void ksmbd_free_user(struct ksmbd_user *user);
68 int ksmbd_anonymous_user(struct ksmbd_user *user);
69 bool ksmbd_compare_user(struct ksmbd_user *u1, struct ksmbd_user *u2);
70 #endif /* __USER_CONFIG_MANAGEMENT_H__ */
71