Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-or-later */
0002 /*
0003  *   Copyright (C) 2018 Samsung Electronics Co., Ltd.
0004  */
0005 
0006 #ifndef __SERVER_H__
0007 #define __SERVER_H__
0008 
0009 #include "smbacl.h"
0010 
0011 /*
0012  * Server state type
0013  */
0014 enum {
0015     SERVER_STATE_STARTING_UP,
0016     SERVER_STATE_RUNNING,
0017     SERVER_STATE_RESETTING,
0018     SERVER_STATE_SHUTTING_DOWN,
0019 };
0020 
0021 /*
0022  * Server global config string index
0023  */
0024 enum {
0025     SERVER_CONF_NETBIOS_NAME,
0026     SERVER_CONF_SERVER_STRING,
0027     SERVER_CONF_WORK_GROUP,
0028 };
0029 
0030 struct ksmbd_server_config {
0031     unsigned int        flags;
0032     unsigned int        state;
0033     short           signing;
0034     short           enforced_signing;
0035     short           min_protocol;
0036     short           max_protocol;
0037     unsigned short      tcp_port;
0038     unsigned short      ipc_timeout;
0039     unsigned long       ipc_last_active;
0040     unsigned long       deadtime;
0041     unsigned int        share_fake_fscaps;
0042     struct smb_sid      domain_sid;
0043     unsigned int        auth_mechs;
0044 
0045     char            *conf[SERVER_CONF_WORK_GROUP + 1];
0046 };
0047 
0048 extern struct ksmbd_server_config server_conf;
0049 
0050 int ksmbd_set_netbios_name(char *v);
0051 int ksmbd_set_server_string(char *v);
0052 int ksmbd_set_work_group(char *v);
0053 
0054 char *ksmbd_netbios_name(void);
0055 char *ksmbd_server_string(void);
0056 char *ksmbd_work_group(void);
0057 
0058 static inline int ksmbd_server_running(void)
0059 {
0060     return READ_ONCE(server_conf.state) == SERVER_STATE_RUNNING;
0061 }
0062 
0063 static inline int ksmbd_server_configurable(void)
0064 {
0065     return READ_ONCE(server_conf.state) < SERVER_STATE_RESETTING;
0066 }
0067 
0068 int server_queue_ctrl_init_work(void);
0069 int server_queue_ctrl_reset_work(void);
0070 #endif /* __SERVER_H__ */