config-request.h revision 7a5e2e937f0f388465c2938645ee971b4fd01bf1
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainen#ifndef CONFIG_REQUEST_H
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainen#define CONFIG_REQUEST_H
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainen
1358e2c58ce29231485a5cfa454756d429ad3d2cTimo Sirainen#include "config-filter.h"
1358e2c58ce29231485a5cfa454756d429ad3d2cTimo Sirainen
7a5e2e937f0f388465c2938645ee971b4fd01bf1Timo Sirainenenum setting_type;
7a5e2e937f0f388465c2938645ee971b4fd01bf1Timo Sirainen
56439f2879ad690d9ac637e2b90b612760d2f219Timo Sirainenenum config_dump_scope {
56439f2879ad690d9ac637e2b90b612760d2f219Timo Sirainen /* Dump all settings */
56439f2879ad690d9ac637e2b90b612760d2f219Timo Sirainen CONFIG_DUMP_SCOPE_ALL,
56439f2879ad690d9ac637e2b90b612760d2f219Timo Sirainen /* Dump all that have explicitly been set */
56439f2879ad690d9ac637e2b90b612760d2f219Timo Sirainen CONFIG_DUMP_SCOPE_SET,
56439f2879ad690d9ac637e2b90b612760d2f219Timo Sirainen /* Dump only settings that differ from defaults */
56439f2879ad690d9ac637e2b90b612760d2f219Timo Sirainen CONFIG_DUMP_SCOPE_CHANGED
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainen};
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainen
50fe5e053d565b40b0ed2cc7a64b6b98971c0305Timo Sirainenenum config_dump_flags {
50fe5e053d565b40b0ed2cc7a64b6b98971c0305Timo Sirainen CONFIG_DUMP_FLAG_CHECK_SETTINGS = 0x01,
4383941ed43d004f34f77334a06ad14e6a305607Timo Sirainen CONFIG_DUMP_FLAG_HIDE_LIST_DEFAULTS = 0x02,
4383941ed43d004f34f77334a06ad14e6a305607Timo Sirainen /* Errors are reported using callback and they don't stop handling */
4383941ed43d004f34f77334a06ad14e6a305607Timo Sirainen CONFIG_DUMP_FLAG_CALLBACK_ERRORS = 0x04
50fe5e053d565b40b0ed2cc7a64b6b98971c0305Timo Sirainen};
50fe5e053d565b40b0ed2cc7a64b6b98971c0305Timo Sirainen
d84c270231a617298088f597474a73f4a14921aeTimo Sirainenenum config_key_type {
d84c270231a617298088f597474a73f4a14921aeTimo Sirainen CONFIG_KEY_NORMAL,
d84c270231a617298088f597474a73f4a14921aeTimo Sirainen CONFIG_KEY_LIST,
4383941ed43d004f34f77334a06ad14e6a305607Timo Sirainen CONFIG_KEY_UNIQUE_KEY,
4383941ed43d004f34f77334a06ad14e6a305607Timo Sirainen /* error message is in value */
4383941ed43d004f34f77334a06ad14e6a305607Timo Sirainen CONFIG_KEY_ERROR
d84c270231a617298088f597474a73f4a14921aeTimo Sirainen};
d84c270231a617298088f597474a73f4a14921aeTimo Sirainen
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainentypedef void config_request_callback_t(const char *key, const char *value,
d84c270231a617298088f597474a73f4a14921aeTimo Sirainen enum config_key_type type, void *context);
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainen
7a5e2e937f0f388465c2938645ee971b4fd01bf1Timo Sirainenbool config_export_type(string_t *str, const void *value,
7a5e2e937f0f388465c2938645ee971b4fd01bf1Timo Sirainen const void *default_value,
7a5e2e937f0f388465c2938645ee971b4fd01bf1Timo Sirainen enum setting_type type, bool dump_default,
7a5e2e937f0f388465c2938645ee971b4fd01bf1Timo Sirainen bool *dump_r);
637ec4c33b4715737a41f7e58c9b6d1f693c27e2Timo Sirainenint config_request_handle(const struct config_filter *filter,
637ec4c33b4715737a41f7e58c9b6d1f693c27e2Timo Sirainen const char *module, enum config_dump_scope scope,
50fe5e053d565b40b0ed2cc7a64b6b98971c0305Timo Sirainen enum config_dump_flags flags,
637ec4c33b4715737a41f7e58c9b6d1f693c27e2Timo Sirainen config_request_callback_t *callback, void *context);
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainen
e9e5e84ffb2ce2e606a24ce6d930580367562ff0Timo Sirainen#endif