
The same mechanism that is used for modules can be used for the configuration of the core objects. This removes the need for the redundant code that validates various values that is already present in the code that modules use.
568 lines
22 KiB
C++
568 lines
22 KiB
C++
#pragma once
|
|
/*
|
|
* Copyright (c) 2016 MariaDB Corporation Ab
|
|
*
|
|
* Use of this software is governed by the Business Source License included
|
|
* in the LICENSE.TXT file and at www.mariadb.com/bsl11.
|
|
*
|
|
* Change Date: 2022-01-01
|
|
*
|
|
* On the date above, in accordance with the Business Source License, use
|
|
* of this software will be governed by version 2 or later of the General
|
|
* Public License.
|
|
*/
|
|
|
|
/**
|
|
* @file include/maxscale/config.h The configuration handling elements
|
|
*/
|
|
|
|
#include <maxscale/cdefs.h>
|
|
|
|
#include <limits.h>
|
|
#include <openssl/sha.h>
|
|
#include <sys/utsname.h>
|
|
#include <time.h>
|
|
|
|
#include <maxscale/modinfo.h>
|
|
#include <maxscale/jansson.h>
|
|
#include <maxscale/pcre2.h>
|
|
#include <maxscale/query_classifier.h>
|
|
|
|
#ifdef __cplusplus
|
|
#include <unordered_map>
|
|
#include <string>
|
|
// A mapping from a path to a percentage, e.g.: "/disk" -> 80.
|
|
typedef std::unordered_map<std::string, int32_t> MxsDiskSpaceThreshold;
|
|
#else
|
|
typedef void MxsDiskSpaceThreshold;
|
|
#endif
|
|
|
|
MXS_BEGIN_DECLS
|
|
|
|
/** Default port where the REST API listens */
|
|
#define DEFAULT_ADMIN_HTTP_PORT 8989
|
|
#define DEFAULT_ADMIN_HOST "127.0.0.1"
|
|
|
|
#define RELEASE_STR_LENGTH 256
|
|
#define SYSNAME_LEN 256
|
|
#define MAX_ADMIN_USER_LEN 1024
|
|
#define MAX_ADMIN_PW_LEN 1024
|
|
#define MAX_ADMIN_HOST_LEN 1024
|
|
|
|
/** JSON Pointers to key parts of JSON objects */
|
|
#define MXS_JSON_PTR_DATA "/data"
|
|
#define MXS_JSON_PTR_ID "/data/id"
|
|
#define MXS_JSON_PTR_TYPE "/data/type"
|
|
#define MXS_JSON_PTR_PARAMETERS "/data/attributes/parameters"
|
|
|
|
/** Pointers to relation lists */
|
|
#define MXS_JSON_PTR_RELATIONSHIPS "/data/relationships"
|
|
#define MXS_JSON_PTR_RELATIONSHIPS_SERVERS "/data/relationships/servers/data"
|
|
#define MXS_JSON_PTR_RELATIONSHIPS_SERVICES "/data/relationships/services/data"
|
|
#define MXS_JSON_PTR_RELATIONSHIPS_MONITORS "/data/relationships/monitors/data"
|
|
#define MXS_JSON_PTR_RELATIONSHIPS_FILTERS "/data/relationships/filters/data"
|
|
|
|
/** Parameter value JSON Pointers */
|
|
#define MXS_JSON_PTR_PARAM_PORT MXS_JSON_PTR_PARAMETERS "/port"
|
|
#define MXS_JSON_PTR_PARAM_ADDRESS MXS_JSON_PTR_PARAMETERS "/address"
|
|
#define MXS_JSON_PTR_PARAM_PROTOCOL MXS_JSON_PTR_PARAMETERS "/protocol"
|
|
#define MXS_JSON_PTR_PARAM_AUTHENTICATOR MXS_JSON_PTR_PARAMETERS "/authenticator"
|
|
#define MXS_JSON_PTR_PARAM_AUTHENTICATOR_OPTIONS MXS_JSON_PTR_PARAMETERS "/authenticator_options"
|
|
#define MXS_JSON_PTR_PARAM_SSL_KEY MXS_JSON_PTR_PARAMETERS "/ssl_key"
|
|
#define MXS_JSON_PTR_PARAM_SSL_CERT MXS_JSON_PTR_PARAMETERS "/ssl_cert"
|
|
#define MXS_JSON_PTR_PARAM_SSL_CA_CERT MXS_JSON_PTR_PARAMETERS "/ssl_ca_cert"
|
|
#define MXS_JSON_PTR_PARAM_SSL_VERSION MXS_JSON_PTR_PARAMETERS "/ssl_version"
|
|
#define MXS_JSON_PTR_PARAM_SSL_CERT_VERIFY_DEPTH MXS_JSON_PTR_PARAMETERS "/ssl_cert_verify_depth"
|
|
#define MXS_JSON_PTR_PARAM_SSL_VERIFY_PEER_CERT MXS_JSON_PTR_PARAMETERS "/ssl_verify_peer_certificate"
|
|
|
|
/** Non-parameter JSON pointers */
|
|
#define MXS_JSON_PTR_MODULE "/data/attributes/module"
|
|
#define MXS_JSON_PTR_PASSWORD "/data/attributes/password"
|
|
#define MXS_JSON_PTR_ACCOUNT "/data/attributes/account"
|
|
|
|
/**
|
|
* Common configuration parameters names
|
|
*
|
|
* All of the constants resolve to a lowercase version without the CN_ prefix.
|
|
* For example CN_PASSWORD resolves to the static string "password".
|
|
*/
|
|
extern const char CN_ACCOUNT[];
|
|
extern const char CN_ADDRESS[];
|
|
extern const char CN_ARG_MAX[];
|
|
extern const char CN_ARG_MIN[];
|
|
extern const char CN_ADMIN_AUTH[];
|
|
extern const char CN_ADMIN_ENABLED[];
|
|
extern const char CN_ADMIN_LOG_AUTH_FAILURES[];
|
|
extern const char CN_ADMIN_HOST[];
|
|
extern const char CN_ADMIN_PORT[];
|
|
extern const char CN_ADMIN_SSL_KEY[];
|
|
extern const char CN_ADMIN_SSL_CERT[];
|
|
extern const char CN_ADMIN_SSL_CA_CERT[];
|
|
extern const char CN_ATTRIBUTES[];
|
|
extern const char CN_AUTHENTICATOR[];
|
|
extern const char CN_AUTHENTICATOR_DIAGNOSTICS[];
|
|
extern const char CN_AUTHENTICATOR_OPTIONS[];
|
|
extern const char CN_AUTH_ALL_SERVERS[];
|
|
extern const char CN_AUTH_CONNECT_TIMEOUT[];
|
|
extern const char CN_AUTH_READ_TIMEOUT[];
|
|
extern const char CN_AUTH_WRITE_TIMEOUT[];
|
|
extern const char CN_AUTO[];
|
|
extern const char CN_CONNECTION_TIMEOUT[];
|
|
extern const char CN_DUMP_LAST_STATEMENTS[];
|
|
extern const char CN_DATA[];
|
|
extern const char CN_DEFAULT[];
|
|
extern const char CN_DESCRIPTION[];
|
|
extern const char CN_DISK_SPACE_THRESHOLD[];
|
|
extern const char CN_ENABLE_ROOT_USER[];
|
|
extern const char CN_FILTERS[];
|
|
extern const char CN_FILTER[];
|
|
extern const char CN_FILTER_DIAGNOSTICS[];
|
|
extern const char CN_GATEWAY[];
|
|
extern const char CN_ID[];
|
|
extern const char CN_INET[];
|
|
extern const char CN_LISTENER[];
|
|
extern const char CN_LISTENERS[];
|
|
extern const char CN_LOCALHOST_MATCH_WILDCARD_HOST[];
|
|
extern const char CN_LOG_AUTH_WARNINGS[];
|
|
extern const char CN_LOG_THROTTLING[];
|
|
extern const char CN_MAXSCALE[];
|
|
extern const char CN_MAX_CONNECTIONS[];
|
|
extern const char CN_MAX_RETRY_INTERVAL[];
|
|
extern const char CN_META[];
|
|
extern const char CN_METHOD[];
|
|
extern const char CN_MODULE[];
|
|
extern const char CN_MODULES[];
|
|
extern const char CN_MODULE_COMMAND[];
|
|
extern const char CN_MONITORS[];
|
|
extern const char CN_MONITOR[];
|
|
extern const char CN_MONITOR_DIAGNOSTICS[];
|
|
extern const char CN_MS_TIMESTAMP[];
|
|
extern const char CN_NAME[];
|
|
extern const char CN_NON_BLOCKING_POLLS[];
|
|
extern const char CN_OPTIONS[];
|
|
extern const char CN_PARAMETERS[];
|
|
extern const char CN_PASSIVE[];
|
|
extern const char CN_PASSWORD[];
|
|
extern const char CN_POLL_SLEEP[];
|
|
extern const char CN_PORT[];
|
|
extern const char CN_PROTOCOL[];
|
|
extern const char CN_QUERY_CLASSIFIER[];
|
|
extern const char CN_QUERY_CLASSIFIER_ARGS[];
|
|
extern const char CN_QUERY_RETRIES[];
|
|
extern const char CN_QUERY_RETRY_TIMEOUT[];
|
|
extern const char CN_RELATIONSHIPS[];
|
|
extern const char CN_LINKS[];
|
|
extern const char CN_REQUIRED[];
|
|
extern const char CN_RETAIN_LAST_STATEMENTS[];
|
|
extern const char CN_RETRY_ON_FAILURE[];
|
|
extern const char CN_ROUTER[];
|
|
extern const char CN_ROUTER_DIAGNOSTICS[];
|
|
extern const char CN_ROUTER_OPTIONS[];
|
|
extern const char CN_SELF[];
|
|
extern const char CN_SERVERS[];
|
|
extern const char CN_SERVER[];
|
|
extern const char CN_SERVICES[];
|
|
extern const char CN_SERVICE[];
|
|
extern const char CN_SESSIONS[];
|
|
extern const char CN_SESSION_TRACK_TRX_STATE[];
|
|
extern const char CN_SKIP_PERMISSION_CHECKS[];
|
|
extern const char CN_SOCKET[];
|
|
extern const char CN_STATE[];
|
|
extern const char CN_SSL[];
|
|
extern const char CN_SSL_CA_CERT[];
|
|
extern const char CN_SSL_CERT[];
|
|
extern const char CN_SSL_CERT_VERIFY_DEPTH[];
|
|
extern const char CN_SSL_VERIFY_PEER_CERTIFICATE[];
|
|
extern const char CN_SSL_KEY[];
|
|
extern const char CN_SSL_VERSION[];
|
|
extern const char CN_STRIP_DB_ESC[];
|
|
extern const char CN_SUBSTITUTE_VARIABLES[];
|
|
extern const char CN_THREADS[];
|
|
extern const char CN_THREAD_STACK_SIZE[];
|
|
extern const char CN_TICKS[];
|
|
extern const char CN_TYPE[];
|
|
extern const char CN_UNIX[];
|
|
extern const char CN_USER[];
|
|
extern const char CN_USERS[];
|
|
extern const char CN_VERSION_STRING[];
|
|
extern const char CN_WEIGHTBY[];
|
|
extern const char CN_WRITEQ_HIGH_WATER[];
|
|
extern const char CN_WRITEQ_LOW_WATER[];
|
|
|
|
/*
|
|
* Global configuration items that are read (or pre_parsed) to be available for
|
|
* subsequent configuration reading. @see config_pre_parse_global_params.
|
|
*/
|
|
extern const char CN_LOGDIR[];
|
|
extern const char CN_LIBDIR[];
|
|
extern const char CN_PIDDIR[];
|
|
extern const char CN_DATADIR[];
|
|
extern const char CN_CACHEDIR[];
|
|
extern const char CN_LANGUAGE[];
|
|
extern const char CN_EXECDIR[];
|
|
extern const char CN_CONNECTOR_PLUGINDIR[];
|
|
extern const char CN_PERSISTDIR[];
|
|
extern const char CN_MODULE_CONFIGDIR[];
|
|
extern const char CN_SYSLOG[];
|
|
extern const char CN_MAXLOG[];
|
|
extern const char CN_LOG_AUGMENTATION[];
|
|
extern const char CN_LOG_TO_SHM[];
|
|
|
|
/**
|
|
* The config parameter
|
|
*/
|
|
typedef struct config_parameter
|
|
{
|
|
char *name; /**< The name of the parameter */
|
|
char *value; /**< The value of the parameter */
|
|
struct config_parameter *next; /**< Next pointer in the linked list */
|
|
} MXS_CONFIG_PARAMETER;
|
|
|
|
/**
|
|
* The config context structure, used to build the configuration
|
|
* data during the parse process
|
|
*/
|
|
typedef struct config_context
|
|
{
|
|
char *object; /**< The name of the object being configured */
|
|
MXS_CONFIG_PARAMETER *parameters; /**< The list of parameter values */
|
|
void *element; /**< The element created from the data */
|
|
bool was_persisted; /**< True if this object was persisted */
|
|
struct config_context *next; /**< Next pointer in the linked list */
|
|
} CONFIG_CONTEXT;
|
|
|
|
/**
|
|
* The gateway global configuration data
|
|
*/
|
|
typedef struct
|
|
{
|
|
bool config_check; /**< Only check config */
|
|
int n_threads; /**< Number of polling threads */
|
|
size_t thread_stack_size; /**< The stack size of each worker thread */
|
|
char *version_string; /**< The version string of embedded db library */
|
|
char release_string[RELEASE_STR_LENGTH]; /**< The release name string of the system */
|
|
char sysname[SYSNAME_LEN]; /**< The OS name of the system */
|
|
uint8_t mac_sha1[SHA_DIGEST_LENGTH]; /**< The SHA1 digest of an interface MAC address */
|
|
unsigned long id; /**< MaxScale ID */
|
|
unsigned int n_nbpoll; /**< Tune number of non-blocking polls */
|
|
unsigned int pollsleep; /**< Wait time in blocking polls */
|
|
int syslog; /**< Log to syslog */
|
|
int maxlog; /**< Log to MaxScale's own logs */
|
|
int log_to_shm; /**< Write log-file to shared memory */
|
|
unsigned int auth_conn_timeout; /**< Connection timeout for the user authentication */
|
|
unsigned int auth_read_timeout; /**< Read timeout for the user authentication */
|
|
unsigned int auth_write_timeout; /**< Write timeout for the user authentication */
|
|
bool skip_permission_checks; /**< Skip service and monitor permission checks */
|
|
int32_t passive; /**< True if MaxScale is in passive mode */
|
|
int64_t promoted_at; /**< Time when this Maxscale instance was
|
|
* promoted from a passive to an active */
|
|
char qc_name[PATH_MAX]; /**< The name of the query classifier to load */
|
|
char* qc_args; /**< Arguments for the query classifier */
|
|
QC_CACHE_PROPERTIES* qc_cache_properties; /**< The query classifier cache properties. */
|
|
qc_sql_mode_t qc_sql_mode; /**< The query classifier sql mode */
|
|
char admin_host[MAX_ADMIN_HOST_LEN]; /**< Admin interface host */
|
|
uint16_t admin_port; /**< Admin interface port */
|
|
bool admin_auth; /**< Admin interface authentication */
|
|
bool admin_enabled; /**< Admin interface is enabled */
|
|
bool admin_log_auth_failures; /**< Log admin interface authentication failures */
|
|
char admin_ssl_key[PATH_MAX]; /**< Admin SSL key */
|
|
char admin_ssl_cert[PATH_MAX]; /**< Admin SSL cert */
|
|
char admin_ssl_ca_cert[PATH_MAX]; /**< Admin SSL CA cert */
|
|
int query_retries; /**< Number of times a interrupted query is retried */
|
|
time_t query_retry_timeout; /**< Timeout for query retries */
|
|
bool substitute_variables; /**< Should environment variables be substituted */
|
|
char* local_address; /**< Local address to use when connecting */
|
|
time_t users_refresh_time; /**< How often the users can be refreshed */
|
|
uint32_t writeq_high_water; /**< High water mark of dcb write queue */
|
|
uint32_t writeq_low_water; /**< Low water mark of dcb write queue */
|
|
} MXS_CONFIG;
|
|
|
|
/**
|
|
* @brief Get global MaxScale configuration
|
|
*
|
|
* @return The global configuration
|
|
*/
|
|
MXS_CONFIG* config_get_global_options();
|
|
|
|
/**
|
|
* @brief Get a configuration parameter
|
|
*
|
|
* @param params List of parameters
|
|
* @param name Name of parameter to get
|
|
* @return The parameter or NULL if the parameter was not found
|
|
*/
|
|
MXS_CONFIG_PARAMETER* config_get_param(MXS_CONFIG_PARAMETER* params, const char* name);
|
|
|
|
/**
|
|
* @brief Helper function for checking SSL parameters
|
|
*
|
|
* @param key Parameter name
|
|
* @return True if the parameter is an SSL parameter
|
|
*/
|
|
bool config_is_ssl_parameter(const char *key);
|
|
|
|
/**
|
|
* @brief Check if a configuration parameter is valid
|
|
*
|
|
* If a module has declared parameters and parameters were given to the module,
|
|
* the given parameters are compared to the expected ones. This function also
|
|
* does preliminary type checking for various basic values as well as enumerations.
|
|
*
|
|
* @param params Module parameters
|
|
* @param key Parameter key
|
|
* @param value Parameter value
|
|
* @param context Configuration context or NULL for no context (uses runtime checks)
|
|
*
|
|
* @return True if the configuration parameter is valid
|
|
*/
|
|
bool config_param_is_valid(const MXS_MODULE_PARAM *params, const char *key,
|
|
const char *value, const CONFIG_CONTEXT *context);
|
|
|
|
/**
|
|
* @brief Get a boolean value
|
|
*
|
|
* The existence of the parameter should be checked with config_get_param() before
|
|
* calling this function to determine whether the return value represents an existing
|
|
* value or a missing value.
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
*
|
|
* @return The value as a boolean or false if none was found
|
|
*/
|
|
bool config_get_bool(const MXS_CONFIG_PARAMETER *params, const char *key);
|
|
|
|
/**
|
|
* @brief Get an integer value
|
|
*
|
|
* This is used for both MXS_MODULE_PARAM_INT and MXS_MODULE_PARAM_COUNT.
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
*
|
|
* @return The integer value of the parameter or 0 if no parameter was found
|
|
*/
|
|
int config_get_integer(const MXS_CONFIG_PARAMETER *params, const char *key);
|
|
|
|
/**
|
|
* @brief Get a size in bytes
|
|
*
|
|
* The value can have either one of the IEC binary prefixes or SI prefixes as
|
|
* a suffix. For example, the value 1Ki will be converted to 1024 bytes whereas
|
|
* 1k will be converted to 1000 bytes. Supported SI suffix values are k, m, g and t
|
|
* in both lower and upper case. Supported IEC binary suffix values are
|
|
* Ki, Mi, Gi and Ti both in upper and lower case.
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
*
|
|
* @return Number of bytes or 0 if no parameter was found
|
|
*/
|
|
uint64_t config_get_size(const MXS_CONFIG_PARAMETER *params, const char *key);
|
|
|
|
/**
|
|
* @brief Get a string value
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
*
|
|
* @return The raw string value or an empty string if no parameter was found
|
|
*/
|
|
const char* config_get_string(const MXS_CONFIG_PARAMETER *params, const char *key);
|
|
|
|
/**
|
|
* @brief Get a enumeration value
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
* @param values All possible enumeration values
|
|
*
|
|
* @return The enumeration value converted to an int or -1 if the parameter was not found
|
|
*
|
|
* @note The enumeration values should not use -1 so that an undefined parameter is
|
|
* detected. If -1 is used, config_get_param() should be used to detect whether
|
|
* the parameter exists
|
|
*/
|
|
int config_get_enum(const MXS_CONFIG_PARAMETER *params, const char *key,
|
|
const MXS_ENUM_VALUE *values);
|
|
|
|
/**
|
|
* @brief Get a service value
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
*
|
|
* @return Pointer to configured service
|
|
*/
|
|
struct service* config_get_service(const MXS_CONFIG_PARAMETER *params, const char *key);
|
|
|
|
/**
|
|
* @brief Get a server value
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
*
|
|
* @return Pointer to configured server
|
|
*/
|
|
struct server* config_get_server(const MXS_CONFIG_PARAMETER *params, const char *key);
|
|
|
|
/**
|
|
* @brief Get an array of servers. The caller should free the produced array,
|
|
* but not the array elements.
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
* @param output Where to save the output
|
|
* @return How many servers were found, equal to output array size
|
|
*/
|
|
int config_get_server_list(const MXS_CONFIG_PARAMETER *params, const char *key,
|
|
struct server*** output);
|
|
|
|
/**
|
|
* Get a compiled regular expression and the ovector size of the pattern. The
|
|
* return value should be freed by the caller.
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
* @param options PCRE2 compilation options
|
|
* @param output_ovec_size Output for match data ovector size. On error,
|
|
* nothing is written. If NULL, the parameter is ignored.
|
|
* @return Compiled regex code on success, NULL otherwise
|
|
*/
|
|
pcre2_code* config_get_compiled_regex(const MXS_CONFIG_PARAMETER *params,
|
|
const char *key, uint32_t options,
|
|
uint32_t* output_ovec_size);
|
|
|
|
/**
|
|
* Get multiple compiled regular expressions and the maximum ovector size of
|
|
* the patterns. The returned regex codes should be freed by the caller.
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param keys An array of parameter names. If an element is not found in @c params,
|
|
* the corresponding spot in @c out_codes is set to NULL.
|
|
* @param keys_size Size of both @c keys and @c out_arr
|
|
* @param options PCRE2 compilation options
|
|
* @param out_ovec_size If not NULL, the maximum ovector size of successfully
|
|
* compiled patterns is written here.
|
|
* @param out_codes An array of handles to compiled codes. The referenced pointers
|
|
* will be set to point to the compiled codes. The array size must be equal to
|
|
* @c keys array size and it must contain valid pointers.
|
|
*
|
|
* @return True, if all patterns given by @c keys were successfully compiled.
|
|
* False otherwise.
|
|
*/
|
|
bool config_get_compiled_regexes(const MXS_CONFIG_PARAMETER *params,
|
|
const char* keys[], int keys_size,
|
|
uint32_t options, uint32_t* out_ovec_size,
|
|
pcre2_code** out_codes[]);
|
|
/**
|
|
* Parse a list of server names and write the results in an array of strings
|
|
* with one server name in each. The output array and its elements should be
|
|
* deallocated by the caller. The server names are not checked to be actual
|
|
* configured servers.
|
|
*
|
|
* The output array may contain more elements than the the value returned, but these
|
|
* extra elements are null and in the end of the array. If no server names were
|
|
* parsed or if an error occurs, nothing is written to the output parameter.
|
|
*
|
|
* @param servers A list of server names
|
|
* @param output_array Where to save the output
|
|
* @return How many servers were found and set into the array. 0 on error or if
|
|
* none were found.
|
|
*/
|
|
int config_parse_server_list(const char *servers, char ***output_array);
|
|
|
|
/**
|
|
* @brief Get copy of parameter value if it is defined
|
|
*
|
|
* If a parameter with the name of @c key is defined in @c params, a copy of the
|
|
* value of that parameter is returned. The caller must free the returned string.
|
|
*
|
|
* @param params List of configuration parameters
|
|
* @param key Parameter name
|
|
*
|
|
* @return Pointer to copy of value or NULL if the parameter was not found
|
|
*
|
|
* @note The use of this function should be avoided after startup as the function
|
|
* will abort the process if memory allocation fails.
|
|
*/
|
|
char* config_copy_string(const MXS_CONFIG_PARAMETER *params, const char *key);
|
|
|
|
/**
|
|
* @brief Convert string truth value
|
|
*
|
|
* Used for truth values with @c 1, @c yes or @c true for a boolean true value and @c 0, @c no
|
|
* or @c false for a boolean false value.
|
|
*
|
|
* @param str String to convert to a truth value
|
|
*
|
|
* @return 1 if @c value is true, 0 if value is false and -1 if the value is not
|
|
* a valid truth value
|
|
*/
|
|
int config_truth_value(const char *value);
|
|
|
|
/**
|
|
* @brief Get worker thread count
|
|
*
|
|
* @return Number of worker threads
|
|
*/
|
|
int config_threadcount(void);
|
|
|
|
/**
|
|
* @brief Get thread stack size
|
|
*
|
|
* @return The configured worker thread stack size.
|
|
*/
|
|
size_t config_thread_stack_size(void);
|
|
|
|
|
|
/**
|
|
* @brief Get number of non-blocking polls
|
|
*
|
|
* @return Number of non-blocking polls
|
|
*/
|
|
unsigned int config_nbpolls(void);
|
|
|
|
/**
|
|
* @brief Get poll sleep interval
|
|
*
|
|
* @return The time each thread waits for a blocking poll
|
|
*/
|
|
unsigned int config_pollsleep(void);
|
|
|
|
/**
|
|
* @brief List all path parameters as JSON
|
|
*
|
|
* @param host Hostname of this server
|
|
* @return JSON object representing the paths used by MaxScale
|
|
*/
|
|
json_t* config_maxscale_to_json(const char* host);
|
|
|
|
/**
|
|
* @brief Get DCB write queue high water mark
|
|
*
|
|
* @return Number of high water mark in bytes
|
|
*/
|
|
uint32_t config_writeq_high_water();
|
|
|
|
/**
|
|
* @brief Get DCB write queue low water mark
|
|
*
|
|
* @return @return Number of low water mark in bytes
|
|
*/
|
|
uint32_t config_writeq_low_water();
|
|
|
|
/**
|
|
* @brief Interpret a @disk_space_threshold configuration string.
|
|
*
|
|
* @param disk_space_threshold Data structure for holding disk space configuration.
|
|
* @param config_value Configuration value from the configuration file.
|
|
*
|
|
* @return True, if @ config_value was valid, false otherwise.
|
|
*
|
|
*/
|
|
bool config_parse_disk_space_threshold(MxsDiskSpaceThreshold* disk_space_threshold,
|
|
const char* config_value);
|
|
|
|
MXS_END_DECLS
|