master-settings.h revision 85e2a708b37412326d36bf5f1281af02e835864f
02c335c23bf5fa225a467c19f2c063fb0dc7b8c3Timo Sirainen#ifndef __MASTER_SETTINGS_H
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen#define __MASTER_SETTINGS_H
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen#include "network.h"
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenenum mail_protocol {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen MAIL_PROTOCOL_ANY,
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen MAIL_PROTOCOL_IMAP,
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen MAIL_PROTOCOL_POP3,
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen MAIL_PROTOCOL_LDA
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct listener {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct ip_addr ip;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int port;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen int fd;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool wanted;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo SirainenARRAY_DEFINE_TYPE(listener, struct listener);
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct settings {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct server_settings *server;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen enum mail_protocol protocol;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen /* common */
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *base_dir;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *log_path;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *info_log_path;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *log_timestamp;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *syslog_facility;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen /* general */
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *protocols;
4ee00532a265bdfb38539d811fcd12d51210ac35Timo Sirainen const char *listen;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *ssl_listen;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool ssl_disable;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *ssl_ca_file;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *ssl_cert_file;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *ssl_key_file;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *ssl_key_password;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int ssl_parameters_regenerate;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *ssl_cipher_list;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool ssl_verify_client_cert;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool disable_plaintext_auth;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool verbose_ssl;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool shutdown_clients;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool nfs_check;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool version_ignore;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen /* login */
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *login_dir;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *login_executable;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *login_user;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *login_greeting;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *login_log_format_elements;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *login_log_format;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool login_process_per_connection;
030e247340315f4425d297a00b439a4df72bf70cPhil Carmody bool login_chroot;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool login_greeting_capability;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int login_process_size;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int login_processes_count;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int login_max_processes_count;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int login_max_connections;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen /* mail */
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *valid_chroot_dirs;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_chroot;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int max_mail_processes;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mail_max_userip_connections;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool verbose_proctitle;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int first_valid_uid, last_valid_uid;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int first_valid_gid, last_valid_gid;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_extra_groups;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_uid;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_gid;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *default_mail_env;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_location;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_cache_fields;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_never_cache_fields;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mail_cache_min_mail_count;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mailbox_idle_check_interval;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mail_debug;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mail_full_filesystem_access;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mail_max_keyword_length;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mail_save_crlf;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mmap_disable;
0b3e92b6043435c5aa9f1cf1d04b632f3e19abd9Phil Carmody bool dotlock_use_excl;
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen bool fsync_disable;
7bafda1813454621e03615e83d55bccfa7cc56bdTimo Sirainen bool mail_nfs_storage;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mail_nfs_index;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mailbox_list_index_disable;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *lock_method;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool maildir_stat_dirs;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool maildir_copy_with_hardlinks;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool maildir_copy_preserve_filename;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mbox_read_locks;
54e5dadb95d8b7ffce6b5a1f6dbba22044663451Timo Sirainen const char *mbox_write_locks;
54e5dadb95d8b7ffce6b5a1f6dbba22044663451Timo Sirainen unsigned int mbox_lock_timeout;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mbox_dotlock_change_timeout;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mbox_min_index_size;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mbox_dirty_syncs;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mbox_very_dirty_syncs;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool mbox_lazy_writes;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int dbox_rotate_size;
66ecc94150cbce23aad3240135e0782e0a74d479Timo Sirainen unsigned int dbox_rotate_min_size;
66ecc94150cbce23aad3240135e0782e0a74d479Timo Sirainen unsigned int dbox_rotate_days;
66ecc94150cbce23aad3240135e0782e0a74d479Timo Sirainen unsigned int umask;
66ecc94150cbce23aad3240135e0782e0a74d479Timo Sirainen bool mail_drop_priv_before_exec;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_executable;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mail_process_size;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_plugins;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_plugin_dir;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mail_log_prefix;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mail_log_max_lines_per_sec;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen /* imap */
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int imap_max_line_length;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *imap_capability;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *imap_client_workarounds;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen /* pop3 */
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool pop3_no_flag_updates;
66ecc94150cbce23aad3240135e0782e0a74d479Timo Sirainen bool pop3_enable_last;
66ecc94150cbce23aad3240135e0782e0a74d479Timo Sirainen bool pop3_reuse_xuidl;
ef5fb27361cc5e15766e85e28355750ff04b13c9Timo Sirainen bool pop3_lock_session;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *pop3_uidl_format;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *pop3_client_workarounds;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *pop3_logout_format;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen /* .. */
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen ARRAY_TYPE(listener) listens;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen ARRAY_TYPE(listener) ssl_listens;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen uid_t login_uid, mail_uid_t;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen gid_t mail_gid_t;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *imap_generated_capability;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen ARRAY_DEFINE(plugin_envs, const char *);
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct socket_settings {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *path;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int mode;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *user;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *group;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int used:1;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct auth_socket_settings {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_settings *parent;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_socket_settings *next;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *type;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct socket_settings master;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct socket_settings client;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct auth_passdb_settings {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_settings *parent;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_passdb_settings *next;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *driver;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *args;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool deny;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool pass;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool master;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct auth_userdb_settings {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_settings *parent;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_userdb_settings *next;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *driver;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *args;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct auth_settings {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct server_settings *parent;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_settings *next;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *name;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *mechanisms;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *realms;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *default_realm;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int cache_size;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int cache_ttl;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *executable;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *user;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *chroot;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *username_chars;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *username_translation;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *username_format;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *master_user_separator;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *anonymous_username;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *krb5_keytab;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *gssapi_hostname;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool verbose, debug, debug_passwords;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool ssl_require_client_cert;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool ssl_username_from_cert;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int count;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int worker_max_count;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen unsigned int process_size;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen /* .. */
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen uid_t uid;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen gid_t gid;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_passdb_settings *passdbs;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_userdb_settings *userdbs;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_socket_settings *sockets;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct namespace_settings {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct server_settings *parent;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct namespace_settings *next;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *type;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *separator;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *prefix;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *location;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool inbox;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool hidden;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen bool list;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenstruct server_settings {
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct server_settings *next;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen const char *name;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct settings *defaults;
f24202d1a342ac63fb8c28e6fa74e16d37f29ca3Timo Sirainen struct settings *imap;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct settings *pop3;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_settings *auths;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct auth_settings auth_defaults;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen struct namespace_settings *namespaces;
46b823ac3bce2c0f9f0fc73911e48d3a77b04fbeTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen ARRAY_DEFINE(dicts, const char *);
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen gid_t login_gid;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen};
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenextern struct server_settings *settings_root;
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenbool master_settings_read(const char *path, bool nochecks, bool nofixes);
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenvoid master_settings_dump(struct server_settings *set, bool nondefaults);
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenvoid master_settings_init(void);
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainenvoid master_settings_deinit(void);
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen#endif
a914bff43644dd9b3977244203839ca74161e40cTimo Sirainen