summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/asterisk/config_options.h10
-rw-r--r--main/config_options.c8
-rw-r--r--tests/test_config.c2
3 files changed, 17 insertions, 3 deletions
diff --git a/include/asterisk/config_options.h b/include/asterisk/config_options.h
index 55e40ad8a..11a8c5bf9 100644
--- a/include/asterisk/config_options.h
+++ b/include/asterisk/config_options.h
@@ -156,6 +156,7 @@ struct aco_file {
struct aco_info {
const char *module; /*!< The name of the module whose config is being processed */
+ int hidden:1; /*!< If enabled, this config item is hidden from users */
aco_pre_apply_config pre_apply_config; /*!< A callback called after processing, but before changes are applied */
aco_post_apply_config post_apply_config;/*!< A callback called after changes are applied */
aco_snapshot_alloc snapshot_alloc; /*!< Allocate an object to hold all global configs and item containers */
@@ -213,6 +214,15 @@ static struct aco_info name = { \
__VA_ARGS__ \
};
+#define CONFIG_INFO_TEST(name, arr, alloc, ...) \
+static struct aco_info name = { \
+ .module = AST_MODULE, \
+ .global_obj = &arr, \
+ .snapshot_alloc = alloc, \
+ .hidden = 1, \
+ __VA_ARGS__ \
+};
+
/*! \brief Initialize an aco_info structure
* \note aco_info_destroy must be called if this succeeds
* \param info The address of an aco_info struct to initialize
diff --git a/main/config_options.c b/main/config_options.c
index e789c1cfc..0d869b960 100644
--- a/main/config_options.c
+++ b/main/config_options.c
@@ -184,7 +184,9 @@ static int link_option_to_types(struct aco_info *info, struct aco_type **types,
}
if (!ao2_link(type->internal->opts, opt)
#ifdef AST_XML_DOCS
- || (!opt->no_doc && xmldoc_update_config_option(types, info->module, opt->name, type->name, opt->default_val, opt->match_type == ACO_REGEX, opt->type))
+ || (!info->hidden &&
+ !opt->no_doc &&
+ xmldoc_update_config_option(types, info->module, opt->name, type->name, opt->default_val, opt->match_type == ACO_REGEX, opt->type))
#endif /* AST_XML_DOCS */
) {
do {
@@ -773,7 +775,9 @@ int aco_info_init(struct aco_info *info)
goto error;
}
#ifdef AST_XML_DOCS
- if (!type->hidden && xmldoc_update_config_type(info->module, type->name, type->category, type->matchfield, type->matchvalue, type->category_match == ACO_WHITELIST)) {
+ if (!info->hidden &&
+ !type->hidden &&
+ xmldoc_update_config_type(info->module, type->name, type->category, type->matchfield, type->matchvalue, type->category_match == ACO_WHITELIST)) {
goto error;
}
#endif /* AST_XML_DOCS */
diff --git a/tests/test_config.c b/tests/test_config.c
index 8eeb9f8a9..6b1a8e420 100644
--- a/tests/test_config.c
+++ b/tests/test_config.c
@@ -749,7 +749,7 @@ struct aco_file config_test_conf = {
};
static AO2_GLOBAL_OBJ_STATIC(global_obj);
-CONFIG_INFO_STANDARD(cfg_info, global_obj, test_config_alloc,
+CONFIG_INFO_TEST(cfg_info, global_obj, test_config_alloc,
.files = ACO_FILES(&config_test_conf),
);