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 25 static inline bool user_guest(struct ksmbd_user *user) 26 { 27 return user->flags & KSMBD_USER_FLAG_GUEST_ACCOUNT; 28 } 29 30 static inline void set_user_flag(struct ksmbd_user *user, int flag) 31 { 32 user->flags |= flag; 33 } 34 35 static inline int test_user_flag(struct ksmbd_user *user, int flag) 36 { 37 return user->flags & flag; 38 } 39 40 static inline void set_user_guest(struct ksmbd_user *user) 41 { 42 } 43 44 static inline char *user_passkey(struct ksmbd_user *user) 45 { 46 return user->passkey; 47 } 48 49 static inline char *user_name(struct ksmbd_user *user) 50 { 51 return user->name; 52 } 53 54 static inline unsigned int user_uid(struct ksmbd_user *user) 55 { 56 return user->uid; 57 } 58 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