Newer
Older
Brett Bryant
committed
ret = ast_search_dns(&context, domain, C_IN, T_TXT, txt_callback);
if (ret > 0) {
Brett Bryant
committed
ast_copy_string(txt, context.txt, txtlen);
} else {
ast_debug(2, "No such number found in ENUM: %s (%s)\n", domain, strerror(errno));
if (autoservice) {
ast_autoservice_stop(chan);
}
ast_free(domain);
return 0;
/*! \brief Initialize the ENUM support subsystem */
static int private_enum_init(int reload)
Brett Bryant
committed
const char *string;
struct ast_flags config_flags = { reload ? CONFIG_FLAG_FILEUNCHANGED : 0 };
Tilghman Lesher
committed
if ((cfg = ast_config_load2("enum.conf", "enum", config_flags)) == CONFIG_STATUS_FILEUNCHANGED)
Tilghman Lesher
committed
if (cfg == CONFIG_STATUS_FILEMISSING || cfg == CONFIG_STATUS_FILEUNCHANGED || cfg == CONFIG_STATUS_FILEINVALID) {
return 0;
}
ast_mutex_lock(&enumlock);
Brett Bryant
committed
if ((string = ast_variable_retrieve(cfg, "ienum", "branchlabel"))) {
ast_copy_string(ienum_branchlabel, string, sizeof(ienum_branchlabel));
}
if ((string = ast_variable_retrieve(cfg, "ienum", "ebl_alg"))) {
ebl_alg = ENUMLOOKUP_BLR_CC; /* default */
if (!strcasecmp(string, "txt"))
Brett Bryant
committed
else if (!strcasecmp(string, "ebl"))
Brett Bryant
committed
else if (!strcasecmp(string, "cc"))
Brett Bryant
committed
else
ast_log(LOG_WARNING, "No valid parameter for ienum/ebl_alg.\n");
ast_mutex_unlock(&enumlock);
static int load_module(void)
return private_enum_init(0) ? AST_MODULE_LOAD_FAILURE : AST_MODULE_LOAD_SUCCESS;
static int unload_module(void)
{
return 0;
}
static int reload_module(void)
return private_enum_init(1);
AST_MODULE_INFO(ASTERISK_GPL_KEY, AST_MODFLAG_GLOBAL_SYMBOLS | AST_MODFLAG_LOAD_ORDER, "ENUM Support",
.support_level = AST_MODULE_SUPPORT_CORE,
.load = load_module,
.unload = unload_module,
.reload = reload_module,
.load_pri = AST_MODPRI_CORE,
.requires = "extconfig",