if (pctx->token.type == isc_tokentype_string &&
strcasecmp(TOKEN_STRING(pctx), "none") == 0)
{
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_none, ret);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_none, ret);
return ISC_R_SUCCESS;
}
cfg_ungettoken(pctx);
if (pctx->token.type == isc_tokentype_string &&
strcasecmp(TOKEN_STRING(pctx), "auto") == 0)
{
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_auto, ret);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_auto, ret);
return ISC_R_SUCCESS;
}
cfg_ungettoken(pctx);
if (pctx->token.type == isc_tokentype_string &&
strcasecmp(TOKEN_STRING(pctx), "none") == 0)
{
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_none, ret);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_none, ret);
return ISC_R_SUCCESS;
}
if (pctx->token.type == isc_tokentype_string &&
strcasecmp(TOKEN_STRING(pctx), "hostname") == 0)
{
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_hostname, ret);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_hostname, ret);
(*ret)->value.boolean = true;
return ISC_R_SUCCESS;
}
}
if (found == false) {
- cfg_listelt_t *eelt = isc_mem_get(effectiveobj->mctx,
- sizeof(*eelt));
+ cfg_listelt_t *eelt = NULL;
+ cfg_listelt_create(&eelt);
*eelt = (cfg_listelt_t){ .link = ISC_LINK_INITIALIZER };
cfg_obj_clone(checkname, &eelt->obj);
ISC_LIST_APPEND(effectiveobj->value.list, eelt, link);
}
CHECK(parse_unitstring(TOKEN_STRING(pctx), &val));
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_uint64, &obj);
obj->value.uint64 = val;
*ret = obj;
percent = strtoull(TOKEN_STRING(pctx), &endp, 10);
if (*endp == '%' && *(endp + 1) == 0) {
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_percentage, &obj);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_percentage, &obj);
obj->value.uint32 = (uint32_t)percent;
*ret = obj;
return ISC_R_SUCCESS;
} else {
CHECK(parse_unitstring(TOKEN_STRING(pctx), &val));
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_uint64, &obj);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_uint64, &obj);
obj->value.uint64 = val;
*ret = obj;
return ISC_R_SUCCESS;
strcasecmp(TOKEN_STRING(pctx), "none") == 0)
{
CHECK(cfg_gettoken(pctx, 0));
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_none, ret);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_none, ret);
} else {
CHECK(cfg_parse_sockaddr_generic(pctx, &cfg_type_querysource,
type, ret));
* This makes little sense, but we support it for
* compatibility with BIND 8.
*/
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_uint32, ret);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_uint32, ret);
(*ret)->value.uint32 = 1;
}
(*ret)->type = &cfg_type_debuglevel; /* XXX kludge */
/*! \file */
-#include <ctype.h>
#include <errno.h>
#include <glob.h>
#include <inttypes.h>
free_list(cfg_obj_t *obj);
static void
-create_list(isc_mem_t *mctx, cfg_obj_t *file, size_t line,
- const cfg_type_t *type, cfg_obj_t **obj);
-static void
-create_listelt(cfg_obj_t *list, cfg_listelt_t **eltp);
+create_list(cfg_obj_t *file, size_t line, const cfg_type_t *type,
+ cfg_obj_t **obj);
static void
free_string(cfg_obj_t *obj);
REQUIRE(source->type->rep->copy != NULL);
REQUIRE(target != NULL && *target == NULL);
- cfg_obj_create(source->mctx, source->file, source->line, source->type,
- target);
+ cfg_obj_create(source->file, source->line, source->type, target);
(*target)->cloned = source->cloned;
source->type->rep->copy(*target, source);
}
static void
copy_sockaddr(cfg_obj_t *to, const cfg_obj_t *from) {
- to->value.sockaddr = isc_mem_get(to->mctx, sizeof(isc_sockaddr_t));
+ to->value.sockaddr = isc_mem_get(isc_g_mctx, sizeof(isc_sockaddr_t));
memmove(to->value.sockaddr, from->value.sockaddr,
sizeof(isc_sockaddr_t));
}
static void
copy_sockaddrtls(cfg_obj_t *to, const cfg_obj_t *from) {
- to->value.sockaddrtls.sockaddr = isc_mem_get(to->mctx,
+ to->value.sockaddrtls.sockaddr = isc_mem_get(isc_g_mctx,
sizeof(isc_sockaddr_t));
memmove(to->value.sockaddrtls.sockaddr,
from->value.sockaddrtls.sockaddr, sizeof(isc_sockaddr_t));
if (from->value.sockaddrtls.tls.base != NULL) {
size_t len = from->value.sockaddrtls.tls.length;
- to->value.sockaddrtls.tls.base = isc_mem_get(to->mctx, len + 1);
+ to->value.sockaddrtls.tls.base = isc_mem_get(isc_g_mctx,
+ len + 1);
to->value.sockaddrtls.tls.length = len;
memmove(to->value.sockaddrtls.tls.base,
from->value.sockaddrtls.tls.base, len + 1);
static void
free_netprefix(cfg_obj_t *obj) {
- isc_mem_put(obj->mctx, obj->value.netprefix, sizeof(cfg_netprefix_t));
+ isc_mem_put(isc_g_mctx, obj->value.netprefix, sizeof(cfg_netprefix_t));
}
static void
copy_netprefix(cfg_obj_t *to, const cfg_obj_t *from) {
- to->value.netprefix = isc_mem_get(to->mctx, sizeof(cfg_netprefix_t));
+ to->value.netprefix = isc_mem_get(isc_g_mctx, sizeof(cfg_netprefix_t));
memmove(to->value.netprefix, from->value.netprefix,
sizeof(cfg_netprefix_t));
}
static void
free_duration(cfg_obj_t *obj) {
- isc_mem_put(obj->mctx, obj->value.duration, sizeof(isccfg_duration_t));
+ isc_mem_put(isc_g_mctx, obj->value.duration, sizeof(isccfg_duration_t));
}
static void
copy_duration(cfg_obj_t *to, const cfg_obj_t *from) {
- to->value.duration = isc_mem_get(to->mctx, sizeof(isccfg_duration_t));
+ to->value.duration = isc_mem_get(isc_g_mctx, sizeof(isccfg_duration_t));
memmove(to->value.duration, from->value.duration,
sizeof(isccfg_duration_t));
}
static void
copy_string(cfg_obj_t *to, const cfg_obj_t *from) {
to->value.string.length = from->value.string.length;
- to->value.string.base = isc_mem_get(to->mctx,
+ to->value.string.base = isc_mem_get(isc_g_mctx,
to->value.string.length + 1);
memmove(to->value.string.base, from->value.string.base,
to->value.string.length + 1);
if (from->value.map.id != NULL) {
cfg_obj_clone(from->value.map.id, &to->value.map.id);
}
- isc_symtab_create(to->mctx, copy_map_destroy, NULL, false,
+ isc_symtab_create(isc_g_mctx, copy_map_destroy, NULL, false,
&to->value.map.symtab);
isc_symtab_foreach(from->value.map.symtab, copy_map_add, to);
ISC_LIST_INIT(to->value.list);
while (fromelt != NULL) {
- cfg_listelt_t *toelt = isc_mem_get(to->mctx, sizeof(*toelt));
+ cfg_listelt_t *toelt = isc_mem_get(isc_g_mctx, sizeof(*toelt));
*toelt = (cfg_listelt_t){ .link = ISC_LINK_INITIALIZER };
cfg_obj_clone(fromelt->obj, &toelt->obj);
size++;
}
- to->value.tuple = isc_mem_cget(to->mctx, size, sizeof(cfg_obj_t *));
+ to->value.tuple = isc_mem_cget(isc_g_mctx, size, sizeof(cfg_obj_t *));
for (size_t j = 0; j < size; j++) {
cfg_obj_clone(from->value.tuple[j], &to->value.tuple[j]);
nfields++;
}
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
- type, &obj);
- obj->value.tuple = isc_mem_cget(pctx->mctx, nfields,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line, type, &obj);
+ obj->value.tuple = isc_mem_cget(isc_g_mctx, nfields,
sizeof(cfg_obj_t *));
for (f = fields, i = 0; f->name != NULL; f++, i++) {
obj->value.tuple[i] = NULL;
CLEANUP_OBJ(obj->value.tuple[i]);
nfields++;
}
- isc_mem_cput(obj->mctx, obj->value.tuple, nfields, sizeof(cfg_obj_t *));
+ isc_mem_cput(isc_g_mctx, obj->value.tuple, nfields,
+ sizeof(cfg_obj_t *));
}
bool
pctx = isc_mem_get(isc_g_mctx, sizeof(*pctx));
- pctx->mctx = NULL;
- isc_mem_attach(isc_g_mctx, &pctx->mctx);
-
pctx->lexer = NULL;
pctx->seen_eof = false;
pctx->ungotten = false;
ISC_LEXCOMMENT_CPLUSPLUS |
ISC_LEXCOMMENT_SHELL);
- create_list(isc_g_mctx, cfg_parser_currentfile(pctx), pctx->line,
+ create_list(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_filelist, &pctx->open_files);
- create_list(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ create_list(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_filelist, &pctx->closed_files);
*ret = pctx;
*/
CLEANUP_OBJ(pctx->open_files);
CLEANUP_OBJ(pctx->closed_files);
- isc_mem_putanddetach(&pctx->mctx, pctx, sizeof(*pctx));
+ isc_mem_put(isc_g_mctx, pctx, sizeof(*pctx));
}
static isc_result_t
goto cleanup;
}
- create_listelt(pctx->open_files, &elt);
cfg_string_create(pctx, filename, &cfg_type_qstring, &stringobj);
+ cfg_listelt_create(&elt);
elt->obj = stringobj;
ISC_LIST_APPEND(pctx->open_files->value.list, elt, link);
REQUIRE(pctx != NULL);
REQUIRE(ret != NULL && *ret == NULL);
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
- &cfg_type_void, ret);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line, &cfg_type_void,
+ ret);
return ISC_R_SUCCESS;
}
return ISC_R_UNEXPECTEDTOKEN;
}
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_percentage, &obj);
obj->value.uint32 = (uint32_t)percent;
*ret = obj;
return ISC_R_UNEXPECTEDTOKEN;
}
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_fixedpoint, &obj);
obj->value.uint32 = strtoul(p, NULL, 10) * 100;
return ISC_R_UNEXPECTEDTOKEN;
}
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_uint32, &obj);
obj->value.uint32 = pctx->token.value.as_ulong;
goto cleanup;
}
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_duration, &obj);
- obj->value.duration = isc_mem_get(obj->mctx, sizeof(isccfg_duration_t));
+ obj->value.duration = isc_mem_get(isc_g_mctx,
+ sizeof(isccfg_duration_t));
*obj->value.duration = duration;
*ret = obj;
duration.iso8601 = false;
duration.unlimited = true;
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_duration, &obj);
- obj->value.duration = isc_mem_get(obj->mctx,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_duration, &obj);
+ obj->value.duration = isc_mem_get(isc_g_mctx,
sizeof(isccfg_duration_t));
*obj->value.duration = duration;
*ret = obj;
cfg_obj_t *obj = NULL;
int len;
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
- type, &obj);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line, type, &obj);
len = strlen(contents);
obj->value.string.length = len;
- obj->value.string.base = isc_mem_get(pctx->mctx, len + 1);
+ obj->value.string.base = isc_mem_get(isc_g_mctx, len + 1);
memmove(obj->value.string.base, contents, len);
obj->value.string.base[len] = '\0';
static void
free_string(cfg_obj_t *obj) {
- isc_mem_put(obj->mctx, obj->value.string.base,
+ isc_mem_put(isc_g_mctx, obj->value.string.base,
obj->value.string.length + 1);
}
static void
free_sockaddr(cfg_obj_t *obj) {
- isc_mem_put(obj->mctx, obj->value.sockaddr, sizeof(isc_sockaddr_t));
+ isc_mem_put(isc_g_mctx, obj->value.sockaddr, sizeof(isc_sockaddr_t));
}
static void
free_sockaddrtls(cfg_obj_t *obj) {
- isc_mem_put(obj->mctx, obj->value.sockaddrtls.sockaddr,
+ isc_mem_put(isc_g_mctx, obj->value.sockaddrtls.sockaddr,
sizeof(isc_sockaddr_t));
if (obj->value.sockaddrtls.tls.base != NULL) {
INSIST(obj->value.sockaddrtls.tls.length != 0);
- isc_mem_put(obj->mctx, obj->value.sockaddrtls.tls.base,
+ isc_mem_put(isc_g_mctx, obj->value.sockaddrtls.tls.base,
obj->value.sockaddrtls.tls.length + 1);
}
}
goto bad_boolean;
}
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_boolean, &obj);
obj->value.boolean = value;
*ret = obj;
*/
static void
-create_list(isc_mem_t *mctx, cfg_obj_t *file, size_t line,
- const cfg_type_t *type, cfg_obj_t **obj) {
- REQUIRE(mctx != NULL);
+create_list(cfg_obj_t *file, size_t line, const cfg_type_t *type,
+ cfg_obj_t **obj) {
REQUIRE(type != NULL);
REQUIRE(obj != NULL && *obj == NULL);
- cfg_obj_create(mctx, file, line, type, obj);
+ cfg_obj_create(file, line, type, obj);
ISC_LIST_INIT((*obj)->value.list);
}
-static void
-create_listelt(cfg_obj_t *list, cfg_listelt_t **eltp) {
+void
+cfg_listelt_create(cfg_listelt_t **eltp) {
cfg_listelt_t *elt;
- REQUIRE(VALID_CFGOBJ(list));
- elt = isc_mem_get(list->mctx, sizeof(*elt));
+ elt = isc_mem_get(isc_g_mctx, sizeof(*elt));
*elt = (cfg_listelt_t){ .link = ISC_LINK_INITIALIZER };
*eltp = elt;
}
static void
-free_listelt(cfg_obj_t *list, cfg_listelt_t **eltp) {
+free_listelt(cfg_listelt_t **eltp) {
cfg_listelt_t *elt = *eltp;
*eltp = NULL;
if (elt->obj != NULL) {
cfg_obj_detach(&elt->obj);
}
- isc_mem_put(list->mctx, elt, sizeof(*elt));
+ isc_mem_put(isc_g_mctx, elt, sizeof(*elt));
}
static void
free_list(cfg_obj_t *obj) {
ISC_LIST_FOREACH(obj->value.list, elt, link) {
- free_listelt(obj, &elt);
+ free_listelt(&elt);
}
}
RETERR(cfg_parse_obj(pctx, elttype, &value));
- create_listelt(list, &elt);
+ cfg_listelt_create(&elt);
elt->obj = value;
*ret = elt;
isc_result_t result;
cfg_listelt_t *elt = NULL;
- create_list(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
- listtype, &listobj);
+ create_list(cfg_parser_currentfile(pctx), pctx->line, listtype,
+ &listobj);
for (;;) {
CHECK(cfg_peektoken(pctx, 0));
cleanup:
if (elt != NULL) {
- free_listelt(listobj, &elt);
+ free_listelt(&elt);
}
CLEANUP_OBJ(listobj);
return result;
listof = listtype->of;
- create_list(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
- listtype, &listobj);
+ create_list(cfg_parser_currentfile(pctx), pctx->line, listtype,
+ &listobj);
for (;;) {
cfg_listelt_t *elt = NULL;
cfg_list_unlink(cfg_obj_t *list, cfg_listelt_t *elt) {
REQUIRE(VALID_CFGOBJ(list));
ISC_LIST_UNLINK(list->value.list, elt, link);
- free_listelt(list, &elt);
+ free_listelt(&elt);
}
/*
cfg_obj_t *listobj = NULL;
cfg_listelt_t *elt = NULL;
- create_list(pctx->mctx, cfg_parser_currentfile(pctx),
- pctx->line, &cfg_type_implicitlist,
- &listobj);
+ create_list(cfg_parser_currentfile(pctx), pctx->line,
+ &cfg_type_implicitlist, &listobj);
symval.as_pointer = listobj;
result = isc_symtab_define_and_return(
obj->value.map.symtab, clause->name,
isc_result_t result;
isc_region_t r;
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_token, &obj);
CHECK(cfg_gettoken(pctx, CFG_LEXOPT_QSTRING));
if (pctx->token.type == isc_tokentype_eof) {
isc_lex_getlasttokentext(pctx->lexer, &pctx->token, &r);
- obj->value.string.base = isc_mem_get(pctx->mctx, r.length + 1);
+ obj->value.string.base = isc_mem_get(isc_g_mctx, r.length + 1);
obj->value.string.length = r.length;
memmove(obj->value.string.base, r.base, r.length);
obj->value.string.base[r.length] = '\0';
cleanup:
if (obj != NULL) {
- isc_mem_put(pctx->mctx, obj, sizeof(*obj));
+ isc_mem_put(isc_g_mctx, obj, sizeof(*obj));
}
return result;
}
isc_result_t result;
int braces = 0;
- create_list(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line, type,
- &listobj);
+ create_list(cfg_parser_currentfile(pctx), pctx->line, type, &listobj);
for (;;) {
cfg_listelt_t *elt = NULL;
unsigned int flags = *(const unsigned int *)type->of;
CHECK(cfg_parse_rawaddr(pctx, flags, &netaddr));
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
- type, &obj);
- obj->value.sockaddr = isc_mem_get(obj->mctx, sizeof(isc_sockaddr_t));
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line, type, &obj);
+ obj->value.sockaddr = isc_mem_get(isc_g_mctx, sizeof(isc_sockaddr_t));
isc_sockaddr_fromnetaddr(obj->value.sockaddr, &netaddr, 0);
*ret = obj;
return ISC_R_SUCCESS;
}
prefixlen = addrlen;
}
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line,
&cfg_type_netprefix, &obj);
- obj->value.netprefix = isc_mem_get(obj->mctx, sizeof(cfg_netprefix_t));
+ obj->value.netprefix = isc_mem_get(isc_g_mctx, sizeof(cfg_netprefix_t));
obj->value.netprefix->address = netaddr;
obj->value.netprefix->prefixlen = prefixlen;
*ret = obj;
CHECK(cfg_getstringtoken(pctx));
isc_textregion_t tok = TOKEN_REGION(pctx);
- copy_textregion(pctx->mctx, &tls, tok);
+ copy_textregion(isc_g_mctx, &tls, tok);
++have_tls;
} else {
CLEANUP(ISC_R_UNEXPECTEDTOKEN);
}
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
- type, &obj);
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line, type, &obj);
if (have_tls == 1) {
obj->value.sockaddrtls.tls = tls;
}
- obj->value.sockaddrtls.sockaddr = isc_mem_get(obj->mctx,
+ obj->value.sockaddrtls.sockaddr = isc_mem_get(isc_g_mctx,
sizeof(isc_sockaddr_t));
isc_sockaddr_fromnetaddr(obj->value.sockaddrtls.sockaddr, &netaddr,
port);
cleanup:
if (tls.base != NULL) {
- isc_mem_put(pctx->mctx, tls.base, tls.length + 1);
+ isc_mem_put(isc_g_mctx, tls.base, tls.length + 1);
}
CLEANUP_OBJ(obj);
return result;
}
void
-cfg_obj_create(isc_mem_t *mctx, cfg_obj_t *file, size_t line,
- const cfg_type_t *type, cfg_obj_t **ret) {
+cfg_obj_create(cfg_obj_t *file, size_t line, const cfg_type_t *type,
+ cfg_obj_t **ret) {
cfg_obj_t *obj;
- REQUIRE(mctx != NULL);
REQUIRE(type != NULL);
REQUIRE(ret != NULL && *ret == NULL);
- obj = isc_mem_get(mctx, sizeof(cfg_obj_t));
+ INSIST(isc_g_mctx != NULL);
+ obj = isc_mem_get(isc_g_mctx, sizeof(cfg_obj_t));
*obj = (cfg_obj_t){ .magic = CFGOBJ_MAGIC, .type = type, .line = line };
isc_refcount_init(&obj->references, 1);
- isc_mem_attach(mctx, &obj->mctx);
if (file != NULL) {
cfg_obj_attach(file, &obj->file);
}
isc_symtab_t *symtab = NULL;
cfg_obj_t *obj = NULL;
- cfg_obj_create(pctx->mctx, cfg_parser_currentfile(pctx), pctx->line,
- type, &obj);
- isc_symtab_create(pctx->mctx, map_symtabitem_destroy, pctx, false,
+ cfg_obj_create(cfg_parser_currentfile(pctx), pctx->line, type, &obj);
+ isc_symtab_create(isc_g_mctx, map_symtabitem_destroy, pctx, false,
&symtab);
obj->value.map.symtab = symtab;
obj->value.map.id = NULL;
obj->magic = 0;
isc_refcount_destroy(&obj->references);
- isc_mem_putanddetach(&obj->mctx, obj, sizeof(cfg_obj_t));
+ isc_mem_put(isc_g_mctx, obj, sizeof(*obj));
}
ISC_REFCOUNT_IMPL(cfg_obj, destroy_cfgobj);
cfg_obj_t *destobj = NULL;
cfg_listelt_t *elt = NULL;
- create_list(mapobj->mctx, obj->file, obj->line,
+ create_list(obj->file, obj->line,
&cfg_type_implicitlist, &destobj);
- create_listelt(destobj, &elt);
+ cfg_listelt_create(&elt);
cfg_obj_attach(obj, &elt->obj);
ISC_LIST_APPEND(destobj->value.list, elt, link);
symval.as_pointer = destobj;
INSIST(result == ISC_R_SUCCESS);
if (destobj->type == &cfg_type_implicitlist) {
- create_listelt(destobj, &elt);
+ cfg_listelt_create(&elt);
cfg_obj_attach(obj, &elt->obj);
ISC_LIST_APPEND(destobj->value.list, elt, link);
} else {
srcelt = cfg_list_first(src);
while (srcelt != NULL) {
- cfg_listelt_t *dstelt = isc_mem_get(dst->mctx, sizeof(*dstelt));
+ cfg_listelt_t *dstelt = isc_mem_get(isc_g_mctx,
+ sizeof(*dstelt));
*dstelt = (cfg_listelt_t){ .link = ISC_LINK_INITIALIZER };
cfg_obj_clone(srcelt->obj, &dstelt->obj);