File: user.h

package info (click to toggle)
ksmbd-tools 3.5.6-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 684 kB
  • sloc: ansic: 10,753; makefile: 104; sh: 1
file content (75 lines) | stat: -rw-r--r-- 1,739 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/* SPDX-License-Identifier: GPL-2.0-or-later */
/*
 *   Copyright (C) 2018 Samsung Electronics Co., Ltd.
 *
 *   linux-cifsd-devel@lists.sourceforge.net
 */

#ifndef __MANAGEMENT_USER_H__
#define __MANAGEMENT_USER_H__

#include <sys/types.h>
#include <pwd.h>
#include <glib.h>

struct ksmbd_user {
	char		*name;
	char		*pass_b64;

	char		*pass;
	int		pass_sz;

	uid_t		uid;
	gid_t		gid;

	int		ref_count;
	int		flags;
	int		state;
	GRWLock		update_lock;
	unsigned int	failed_login_count;
	int		ngroups;
	gid_t		*sgid;
};

static inline void set_user_flag(struct ksmbd_user *user, int bit)
{
	user->flags |= bit;
}

static inline int test_user_flag(struct ksmbd_user *user, int bit)
{
	return user->flags & bit;
}

int usm_remove_user(struct ksmbd_user *user);
struct ksmbd_user *get_ksmbd_user(struct ksmbd_user *user);
void put_ksmbd_user(struct ksmbd_user *user);

struct ksmbd_user *usm_lookup_user(char *name);

void usm_update_user_password(struct ksmbd_user *user, char *pass);

int usm_user_name(char *name, char *p);
int usm_add_new_user(char *name, char *pwd);
int usm_add_guest_account(char *name);

void usm_remove_all_users(void);

void usm_destroy(void);
void usm_init(void);

typedef void (*user_cb)(struct ksmbd_user *user, void *data);
void usm_iter_users(user_cb cb, void *data);

struct ksmbd_login_request;
struct ksmbd_login_response;
struct ksmbd_login_response_ext;
struct ksmbd_logout_request;

int usm_handle_login_request(struct ksmbd_login_request *req,
			     struct ksmbd_login_response *resp);
int usm_handle_logout_request(struct ksmbd_logout_request *req);
int usm_handle_login_request_ext(struct ksmbd_login_request *req,
			     struct ksmbd_login_response_ext *resp);

#endif /* __MANAGEMENT_USER_H__ */