From 7413bcbeb5fc0eaa22de91e8d69714b725567efa Mon Sep 17 00:00:00 2001 From: Corey Farrell Date: Tue, 12 Dec 2017 13:36:39 -0500 Subject: aco: Create ways to minimize use of regex. ACO uses regex in many situations where it is completely unneeded. In some cases this doubles the total processing performed by aco_process_config. * Create ACO_IGNORE category type for use in place of skip_category regex source string. * Create additional aco_category_op values to allow specifying category filter using either a single plain string or a NULL terminated array of plain strings. * Create ACO_PREFIX to allow matching option names to case insensitive prefixes. Change-Id: I66a920dcd8e2b0301f73f968016440a985e72821 --- include/asterisk/config_options.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/asterisk/config_options.h b/include/asterisk/config_options.h index f4c3db188..3227f94eb 100644 --- a/include/asterisk/config_options.h +++ b/include/asterisk/config_options.h @@ -40,18 +40,30 @@ struct aco_type_internal; enum aco_type_t { ACO_GLOBAL, ACO_ITEM, + ACO_IGNORE, }; -/*! \brief Whether a category regex is a blackist or a whitelist */ +/*! Type of category matching to perform */ enum aco_category_op { + /*! Regex based blacklist. */ ACO_BLACKLIST = 0, + /*! Regex based whitelist. */ ACO_WHITELIST, + /*! Blacklist with a single string matched with strcasecmp. */ + ACO_BLACKLIST_EXACT, + /*! Whitelist with a single string matched with strcasecmp. */ + ACO_WHITELIST_EXACT, + /*! Blacklist with a NULL terminated array of strings matched with strcasecmp. */ + ACO_BLACKLIST_ARRAY, + /*! Whitelist with a NULL terminated array of strings matched with strcasecmp. */ + ACO_WHITELIST_ARRAY, }; /*! \brief What kind of matching should be done on an option name */ enum aco_matchtype { ACO_EXACT = 1, ACO_REGEX, + ACO_PREFIX, }; /*! Callback functions for option parsing via aco_process_config() */ -- cgit v1.2.3