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 Frenchstatic 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 Frenchstatic 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