1
0

server.h 1.6 KB

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