72 строки
1.5 KiB
C
72 строки
1.5 KiB
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Copyright (C) 2018 Samsung Electronics Co., Ltd.
|
|
*/
|
|
|
|
#ifndef __SERVER_H__
|
|
#define __SERVER_H__
|
|
|
|
#include "smbacl.h"
|
|
|
|
/*
|
|
* Server state type
|
|
*/
|
|
enum {
|
|
SERVER_STATE_STARTING_UP,
|
|
SERVER_STATE_RUNNING,
|
|
SERVER_STATE_RESETTING,
|
|
SERVER_STATE_SHUTTING_DOWN,
|
|
};
|
|
|
|
/*
|
|
* Server global config string index
|
|
*/
|
|
enum {
|
|
SERVER_CONF_NETBIOS_NAME,
|
|
SERVER_CONF_SERVER_STRING,
|
|
SERVER_CONF_WORK_GROUP,
|
|
};
|
|
|
|
struct ksmbd_server_config {
|
|
unsigned int flags;
|
|
unsigned int state;
|
|
short signing;
|
|
short enforced_signing;
|
|
short min_protocol;
|
|
short max_protocol;
|
|
unsigned short tcp_port;
|
|
unsigned short ipc_timeout;
|
|
unsigned long ipc_last_active;
|
|
unsigned long deadtime;
|
|
unsigned int share_fake_fscaps;
|
|
struct smb_sid domain_sid;
|
|
unsigned int auth_mechs;
|
|
unsigned int max_connections;
|
|
|
|
char *conf[SERVER_CONF_WORK_GROUP + 1];
|
|
};
|
|
|
|
extern struct ksmbd_server_config server_conf;
|
|
|
|
int ksmbd_set_netbios_name(char *v);
|
|
int ksmbd_set_server_string(char *v);
|
|
int ksmbd_set_work_group(char *v);
|
|
|
|
char *ksmbd_netbios_name(void);
|
|
char *ksmbd_server_string(void);
|
|
char *ksmbd_work_group(void);
|
|
|
|
static inline int ksmbd_server_running(void)
|
|
{
|
|
return READ_ONCE(server_conf.state) == SERVER_STATE_RUNNING;
|
|
}
|
|
|
|
static inline int ksmbd_server_configurable(void)
|
|
{
|
|
return READ_ONCE(server_conf.state) < SERVER_STATE_RESETTING;
|
|
}
|
|
|
|
int server_queue_ctrl_init_work(void);
|
|
int server_queue_ctrl_reset_work(void);
|
|
#endif /* __SERVER_H__ */
|