xref: /openbmc/linux/fs/smb/server/server.h (revision 38c8a9a5)
1*38c8a9a5SSteve French /* SPDX-License-Identifier: GPL-2.0-or-later */
2*38c8a9a5SSteve French /*
3*38c8a9a5SSteve French  *   Copyright (C) 2018 Samsung Electronics Co., Ltd.
4*38c8a9a5SSteve French  */
5*38c8a9a5SSteve French 
6*38c8a9a5SSteve French #ifndef __SERVER_H__
7*38c8a9a5SSteve French #define __SERVER_H__
8*38c8a9a5SSteve French 
9*38c8a9a5SSteve French #include "smbacl.h"
10*38c8a9a5SSteve French 
11*38c8a9a5SSteve French /*
12*38c8a9a5SSteve French  * Server state type
13*38c8a9a5SSteve French  */
14*38c8a9a5SSteve French enum {
15*38c8a9a5SSteve French 	SERVER_STATE_STARTING_UP,
16*38c8a9a5SSteve French 	SERVER_STATE_RUNNING,
17*38c8a9a5SSteve French 	SERVER_STATE_RESETTING,
18*38c8a9a5SSteve French 	SERVER_STATE_SHUTTING_DOWN,
19*38c8a9a5SSteve French };
20*38c8a9a5SSteve French 
21*38c8a9a5SSteve French /*
22*38c8a9a5SSteve French  * Server global config string index
23*38c8a9a5SSteve French  */
24*38c8a9a5SSteve French enum {
25*38c8a9a5SSteve French 	SERVER_CONF_NETBIOS_NAME,
26*38c8a9a5SSteve French 	SERVER_CONF_SERVER_STRING,
27*38c8a9a5SSteve French 	SERVER_CONF_WORK_GROUP,
28*38c8a9a5SSteve French };
29*38c8a9a5SSteve French 
30*38c8a9a5SSteve French struct ksmbd_server_config {
31*38c8a9a5SSteve French 	unsigned int		flags;
32*38c8a9a5SSteve French 	unsigned int		state;
33*38c8a9a5SSteve French 	short			signing;
34*38c8a9a5SSteve French 	short			enforced_signing;
35*38c8a9a5SSteve French 	short			min_protocol;
36*38c8a9a5SSteve French 	short			max_protocol;
37*38c8a9a5SSteve French 	unsigned short		tcp_port;
38*38c8a9a5SSteve French 	unsigned short		ipc_timeout;
39*38c8a9a5SSteve French 	unsigned long		ipc_last_active;
40*38c8a9a5SSteve French 	unsigned long		deadtime;
41*38c8a9a5SSteve French 	unsigned int		share_fake_fscaps;
42*38c8a9a5SSteve French 	struct smb_sid		domain_sid;
43*38c8a9a5SSteve French 	unsigned int		auth_mechs;
44*38c8a9a5SSteve French 	unsigned int		max_connections;
45*38c8a9a5SSteve French 
46*38c8a9a5SSteve French 	char			*conf[SERVER_CONF_WORK_GROUP + 1];
47*38c8a9a5SSteve French };
48*38c8a9a5SSteve French 
49*38c8a9a5SSteve French extern struct ksmbd_server_config server_conf;
50*38c8a9a5SSteve French 
51*38c8a9a5SSteve French int ksmbd_set_netbios_name(char *v);
52*38c8a9a5SSteve French int ksmbd_set_server_string(char *v);
53*38c8a9a5SSteve French int ksmbd_set_work_group(char *v);
54*38c8a9a5SSteve French 
55*38c8a9a5SSteve French char *ksmbd_netbios_name(void);
56*38c8a9a5SSteve French char *ksmbd_server_string(void);
57*38c8a9a5SSteve French char *ksmbd_work_group(void);
58*38c8a9a5SSteve French 
ksmbd_server_running(void)59*38c8a9a5SSteve French static inline int ksmbd_server_running(void)
60*38c8a9a5SSteve French {
61*38c8a9a5SSteve French 	return READ_ONCE(server_conf.state) == SERVER_STATE_RUNNING;
62*38c8a9a5SSteve French }
63*38c8a9a5SSteve French 
ksmbd_server_configurable(void)64*38c8a9a5SSteve French static inline int ksmbd_server_configurable(void)
65*38c8a9a5SSteve French {
66*38c8a9a5SSteve French 	return READ_ONCE(server_conf.state) < SERVER_STATE_RESETTING;
67*38c8a9a5SSteve French }
68*38c8a9a5SSteve French 
69*38c8a9a5SSteve French int server_queue_ctrl_init_work(void);
70*38c8a9a5SSteve French int server_queue_ctrl_reset_work(void);
71*38c8a9a5SSteve French #endif /* __SERVER_H__ */
72