/* fix-up the select calls */ int cfg_fixup_selects() { cfg_selects_t *sel; cfg_group_t *group; cfg_mapping_t *var; for (sel=cfg_non_fixed_selects; sel; sel=sel->next) { if (sel->var_p) { if (cfg_lookup_var(&sel->gname, &sel->vname, &group, &var)) { LM_ERR("unknown variable: %.*s.%.*s\n", sel->gname.len, sel->gname.s, sel->vname.len, sel->vname.s); return -1; } *(sel->group_p) = (void *)group; *(sel->var_p) = (void *)var; } else { if (!(group = cfg_lookup_group(sel->gname.s, sel->gname.len))) { LM_ERR("unknown configuration group: %.*s\n", sel->gname.len, sel->gname.s); return -1; } *(sel->group_p) = (void *)group; } } /* the select list is not needed anymore */ cfg_free_selects(); return 0; }
/* fix-up the select calls */ int cfg_fixup_selects() { cfg_selects_t *sel; cfg_group_t *group; cfg_mapping_t *var; for (sel=cfg_non_fixed_selects; sel; sel=sel->next) { if (cfg_lookup_var(&sel->gname, &sel->vname, &group, &var)) { LOG(L_ERR, "ERROR: cfg_parse_selects(): unknown variable: %.*s.%.*s\n", sel->gname.len, sel->gname.s, sel->vname.len, sel->vname.s); return -1; } *(sel->group_p) = (void *)group; *(sel->var_p) = (void *)var; } /* the select list is not needed anymore */ cfg_free_selects(); return 0; }
/* destroy the memory allocated for the cfg framework */ void cfg_destroy(void) { /* free the contexts */ cfg_ctx_destroy(); /* free the list of groups */ cfg_destory_groups((cfg_global && (*cfg_global)) ? (*cfg_global)->vars : NULL); /* free the select list */ cfg_free_selects(); if (cfg_child_cb_first) { if (*cfg_child_cb_first) cfg_child_cb_free(*cfg_child_cb_first); shm_free(cfg_child_cb_first); cfg_child_cb_first = NULL; } if (cfg_child_cb_last) { shm_free(cfg_child_cb_last); cfg_child_cb_last = NULL; } if (cfg_global) { if (*cfg_global) cfg_block_free(*cfg_global); shm_free(cfg_global); cfg_global = NULL; } if (cfg_global_lock) { lock_destroy(cfg_global_lock); lock_dealloc(cfg_global_lock); cfg_global_lock = 0; } if (cfg_writer_lock) { lock_destroy(cfg_writer_lock); lock_dealloc(cfg_writer_lock); cfg_writer_lock = 0; } }