diff options
Diffstat (limited to 'contrib/bind9/lib/isccfg')
-rw-r--r-- | contrib/bind9/lib/isccfg/include/isccfg/cfg.h | 75 | ||||
-rw-r--r-- | contrib/bind9/lib/isccfg/include/isccfg/grammar.h | 32 | ||||
-rw-r--r-- | contrib/bind9/lib/isccfg/namedconf.c | 18 | ||||
-rw-r--r-- | contrib/bind9/lib/isccfg/parser.c | 136 |
4 files changed, 135 insertions, 126 deletions
diff --git a/contrib/bind9/lib/isccfg/include/isccfg/cfg.h b/contrib/bind9/lib/isccfg/include/isccfg/cfg.h index b4081cd..c486719 100644 --- a/contrib/bind9/lib/isccfg/include/isccfg/cfg.h +++ b/contrib/bind9/lib/isccfg/include/isccfg/cfg.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2002 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: cfg.h,v 1.30.12.4 2004/03/08 09:05:07 marka Exp $ */ +/* $Id: cfg.h,v 1.30.12.6 2006/03/02 00:37:20 marka Exp $ */ #ifndef ISCCFG_CFG_H #define ISCCFG_CFG_H 1 @@ -74,7 +74,7 @@ typedef struct cfg_listelt cfg_listelt_t; * "directory". */ typedef isc_result_t -(*cfg_parsecallback_t)(const char *clausename, cfg_obj_t *obj, void *arg); +(*cfg_parsecallback_t)(const char *clausename, const cfg_obj_t *obj, void *arg); /*** *** Functions @@ -143,20 +143,20 @@ cfg_parser_destroy(cfg_parser_t **pctxp); */ isc_boolean_t -cfg_obj_isvoid(cfg_obj_t *obj); +cfg_obj_isvoid(const cfg_obj_t *obj); /* * Return true iff 'obj' is of void type (e.g., an optional * value not specified). */ isc_boolean_t -cfg_obj_ismap(cfg_obj_t *obj); +cfg_obj_ismap(const cfg_obj_t *obj); /* * Return true iff 'obj' is of a map type. */ isc_result_t -cfg_map_get(cfg_obj_t *mapobj, const char* name, cfg_obj_t **obj); +cfg_map_get(const cfg_obj_t *mapobj, const char* name, const cfg_obj_t **obj); /* * Extract an element from a configuration object, which * must be of a map type. @@ -171,8 +171,8 @@ cfg_map_get(cfg_obj_t *mapobj, const char* name, cfg_obj_t **obj); * ISC_R_NOTFOUND - name not found in map */ -cfg_obj_t * -cfg_map_getname(cfg_obj_t *mapobj); +const cfg_obj_t * +cfg_map_getname(const cfg_obj_t *mapobj); /* * Get the name of a named map object, like a server "key" clause. * @@ -185,13 +185,13 @@ cfg_map_getname(cfg_obj_t *mapobj); */ isc_boolean_t -cfg_obj_istuple(cfg_obj_t *obj); +cfg_obj_istuple(const cfg_obj_t *obj); /* * Return true iff 'obj' is of a map type. */ -cfg_obj_t * -cfg_tuple_get(cfg_obj_t *tupleobj, const char *name); +const cfg_obj_t * +cfg_tuple_get(const cfg_obj_t *tupleobj, const char *name); /* * Extract an element from a configuration object, which * must be of a tuple type. @@ -203,13 +203,13 @@ cfg_tuple_get(cfg_obj_t *tupleobj, const char *name); */ isc_boolean_t -cfg_obj_isuint32(cfg_obj_t *obj); +cfg_obj_isuint32(const cfg_obj_t *obj); /* * Return true iff 'obj' is of integer type. */ isc_uint32_t -cfg_obj_asuint32(cfg_obj_t *obj); +cfg_obj_asuint32(const cfg_obj_t *obj); /* * Returns the value of a configuration object of 32-bit integer type. * @@ -221,13 +221,13 @@ cfg_obj_asuint32(cfg_obj_t *obj); */ isc_boolean_t -cfg_obj_isuint64(cfg_obj_t *obj); +cfg_obj_isuint64(const cfg_obj_t *obj); /* * Return true iff 'obj' is of integer type. */ isc_uint64_t -cfg_obj_asuint64(cfg_obj_t *obj); +cfg_obj_asuint64(const cfg_obj_t *obj); /* * Returns the value of a configuration object of 64-bit integer type. * @@ -239,13 +239,13 @@ cfg_obj_asuint64(cfg_obj_t *obj); */ isc_boolean_t -cfg_obj_isstring(cfg_obj_t *obj); +cfg_obj_isstring(const cfg_obj_t *obj); /* * Return true iff 'obj' is of string type. */ -char * -cfg_obj_asstring(cfg_obj_t *obj); +const char * +cfg_obj_asstring(const cfg_obj_t *obj); /* * Returns the value of a configuration object of a string type * as a null-terminated string. @@ -258,13 +258,13 @@ cfg_obj_asstring(cfg_obj_t *obj); */ isc_boolean_t -cfg_obj_isboolean(cfg_obj_t *obj); +cfg_obj_isboolean(const cfg_obj_t *obj); /* * Return true iff 'obj' is of a boolean type. */ isc_boolean_t -cfg_obj_asboolean(cfg_obj_t *obj); +cfg_obj_asboolean(const cfg_obj_t *obj); /* * Returns the value of a configuration object of a boolean type. * @@ -276,13 +276,13 @@ cfg_obj_asboolean(cfg_obj_t *obj); */ isc_boolean_t -cfg_obj_issockaddr(cfg_obj_t *obj); +cfg_obj_issockaddr(const cfg_obj_t *obj); /* * Return true iff 'obj' is a socket address. */ -isc_sockaddr_t * -cfg_obj_assockaddr(cfg_obj_t *obj); +const isc_sockaddr_t * +cfg_obj_assockaddr(const cfg_obj_t *obj); /* * Returns the value of a configuration object representing a socket address. * @@ -295,13 +295,13 @@ cfg_obj_assockaddr(cfg_obj_t *obj); */ isc_boolean_t -cfg_obj_isnetprefix(cfg_obj_t *obj); +cfg_obj_isnetprefix(const cfg_obj_t *obj); /* * Return true iff 'obj' is a network prefix. */ void -cfg_obj_asnetprefix(cfg_obj_t *obj, isc_netaddr_t *netaddr, +cfg_obj_asnetprefix(const cfg_obj_t *obj, isc_netaddr_t *netaddr, unsigned int *prefixlen); /* * Gets the value of a configuration object representing a network @@ -314,13 +314,13 @@ cfg_obj_asnetprefix(cfg_obj_t *obj, isc_netaddr_t *netaddr, */ isc_boolean_t -cfg_obj_islist(cfg_obj_t *obj); +cfg_obj_islist(const cfg_obj_t *obj); /* * Return true iff 'obj' is of list type. */ -cfg_listelt_t * -cfg_list_first(cfg_obj_t *obj); +const cfg_listelt_t * +cfg_list_first(const cfg_obj_t *obj); /* * Returns the first list element in a configuration object of a list type. * @@ -332,8 +332,8 @@ cfg_list_first(cfg_obj_t *obj); * or NULL if the list is empty or nonexistent. */ -cfg_listelt_t * -cfg_list_next(cfg_listelt_t *elt); +const cfg_listelt_t * +cfg_list_next(const cfg_listelt_t *elt); /* * Returns the next element of a list of configuration objects. * @@ -346,8 +346,8 @@ cfg_list_next(cfg_listelt_t *elt); * or NULL if there are no more elements. */ -cfg_obj_t * -cfg_listelt_value(cfg_listelt_t *elt); +const cfg_obj_t * +cfg_listelt_value(const cfg_listelt_t *elt); /* * Returns the configuration object associated with cfg_listelt_t. * @@ -360,7 +360,7 @@ cfg_listelt_value(cfg_listelt_t *elt); */ void -cfg_print(cfg_obj_t *obj, +cfg_print(const cfg_obj_t *obj, void (*f)(void *closure, const char *text, int textlen), void *closure); /* @@ -378,7 +378,7 @@ cfg_print_grammar(const cfg_type_t *type, */ isc_boolean_t -cfg_obj_istype(cfg_obj_t *obj, const cfg_type_t *type); +cfg_obj_istype(const cfg_obj_t *obj, const cfg_type_t *type); /* * Return true iff 'obj' is of type 'type'. */ @@ -389,7 +389,8 @@ void cfg_obj_destroy(cfg_parser_t *pctx, cfg_obj_t **obj); */ void -cfg_obj_log(cfg_obj_t *obj, isc_log_t *lctx, int level, const char *fmt, ...) +cfg_obj_log(const cfg_obj_t *obj, isc_log_t *lctx, int level, + const char *fmt, ...) ISC_FORMAT_PRINTF(4, 5); /* * Log a message concerning configuration object 'obj' to the logging @@ -398,13 +399,13 @@ cfg_obj_log(cfg_obj_t *obj, isc_log_t *lctx, int level, const char *fmt, ...) */ const char * -cfg_obj_file(cfg_obj_t *obj); +cfg_obj_file(const cfg_obj_t *obj); /* * Return the file that defined this object. */ unsigned int -cfg_obj_line(cfg_obj_t *obj); +cfg_obj_line(const cfg_obj_t *obj); /* * Return the line in file where this object was defined. */ diff --git a/contrib/bind9/lib/isccfg/include/isccfg/grammar.h b/contrib/bind9/lib/isccfg/include/isccfg/grammar.h index 92b142b7..4aaeb4f 100644 --- a/contrib/bind9/lib/isccfg/include/isccfg/grammar.h +++ b/contrib/bind9/lib/isccfg/include/isccfg/grammar.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: grammar.h,v 1.3.50.4 2004/11/30 01:15:44 marka Exp $ */ +/* $Id: grammar.h,v 1.3.50.6 2006/03/02 00:37:20 marka Exp $ */ #ifndef ISCCFG_GRAMMAR_H #define ISCCFG_GRAMMAR_H 1 @@ -63,7 +63,7 @@ typedef struct cfg_rep cfg_rep_t; typedef isc_result_t (*cfg_parsefunc_t)(cfg_parser_t *, const cfg_type_t *type, cfg_obj_t **); -typedef void (*cfg_printfunc_t)(cfg_printer_t *, cfg_obj_t *); +typedef void (*cfg_printfunc_t)(cfg_printer_t *, const cfg_obj_t *); typedef void (*cfg_docfunc_t)(cfg_printer_t *, const cfg_type_t *); typedef void (*cfg_freefunc_t)(cfg_parser_t *, cfg_obj_t *); @@ -156,7 +156,7 @@ struct cfg_obj { isc_sockaddr_t sockaddr; cfg_netprefix_t netprefix; } value; - char * file; + const char * file; unsigned int line; }; @@ -274,16 +274,16 @@ isc_result_t cfg_parse_uint32(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_uint32(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_uint32(cfg_printer_t *pctx, const cfg_obj_t *obj); void -cfg_print_uint64(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_uint64(cfg_printer_t *pctx, const cfg_obj_t *obj); isc_result_t cfg_parse_qstring(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_ustring(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_ustring(cfg_printer_t *pctx, const cfg_obj_t *obj); isc_result_t cfg_parse_astring(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); @@ -292,7 +292,7 @@ isc_result_t cfg_parse_rawaddr(cfg_parser_t *pctx, unsigned int flags, isc_netaddr_t *na); void -cfg_print_rawaddr(cfg_printer_t *pctx, isc_netaddr_t *na); +cfg_print_rawaddr(cfg_printer_t *pctx, const isc_netaddr_t *na); isc_boolean_t cfg_lookingat_netaddr(cfg_parser_t *pctx, unsigned int flags); @@ -304,7 +304,7 @@ isc_result_t cfg_parse_sockaddr(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_sockaddr(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_sockaddr(cfg_printer_t *pctx, const cfg_obj_t *obj); void cfg_doc_sockaddr(cfg_printer_t *pctx, const cfg_type_t *type); @@ -323,7 +323,7 @@ isc_result_t cfg_parse_tuple(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_tuple(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_tuple(cfg_printer_t *pctx, const cfg_obj_t *obj); void cfg_doc_tuple(cfg_printer_t *pctx, const cfg_type_t *type); @@ -339,7 +339,7 @@ isc_result_t cfg_parse_bracketed_list(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_bracketed_list(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_bracketed_list(cfg_printer_t *pctx, const cfg_obj_t *obj); void cfg_doc_bracketed_list(cfg_printer_t *pctx, const cfg_type_t *type); @@ -348,7 +348,7 @@ isc_result_t cfg_parse_spacelist(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_spacelist(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_spacelist(cfg_printer_t *pctx, const cfg_obj_t *obj); isc_result_t cfg_parse_enum(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); @@ -374,7 +374,7 @@ isc_result_t cfg_parse_addressed_map(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_map(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_map(cfg_printer_t *pctx, const cfg_obj_t *obj); void cfg_doc_map(cfg_printer_t *pctx, const cfg_type_t *type); @@ -383,7 +383,7 @@ isc_result_t cfg_parse_mapbody(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_mapbody(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_mapbody(cfg_printer_t *pctx, const cfg_obj_t *obj); void cfg_doc_mapbody(cfg_printer_t *pctx, const cfg_type_t *type); @@ -392,7 +392,7 @@ isc_result_t cfg_parse_void(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_void(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_void(cfg_printer_t *pctx, const cfg_obj_t *obj); void cfg_doc_void(cfg_printer_t *pctx, const cfg_type_t *type); @@ -401,7 +401,7 @@ isc_result_t cfg_parse_obj(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); void -cfg_print_obj(cfg_printer_t *pctx, cfg_obj_t *obj); +cfg_print_obj(cfg_printer_t *pctx, const cfg_obj_t *obj); void cfg_doc_obj(cfg_printer_t *pctx, const cfg_type_t *type); diff --git a/contrib/bind9/lib/isccfg/namedconf.c b/contrib/bind9/lib/isccfg/namedconf.c index bfc5dda..d54bbe2 100644 --- a/contrib/bind9/lib/isccfg/namedconf.c +++ b/contrib/bind9/lib/isccfg/namedconf.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004, 2005 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004-2006 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2002, 2003 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: namedconf.c,v 1.21.44.32 2005/10/26 05:06:40 marka Exp $ */ +/* $Id: namedconf.c,v 1.21.44.34 2006/03/02 00:37:20 marka Exp $ */ #include <config.h> @@ -58,7 +58,7 @@ static isc_result_t parse_optional_keyvalue(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); static void -print_keyvalue(cfg_printer_t *pctx, cfg_obj_t *obj); +print_keyvalue(cfg_printer_t *pctx, const cfg_obj_t *obj); static void doc_keyvalue(cfg_printer_t *pctx, const cfg_type_t *type); @@ -428,7 +428,7 @@ static cfg_type_t cfg_type_transferformat = { */ static void -print_none(cfg_printer_t *pctx, cfg_obj_t *obj) { +print_none(cfg_printer_t *pctx, const cfg_obj_t *obj) { UNUSED(obj); cfg_print_chars(pctx, "none", 4); } @@ -469,7 +469,7 @@ static cfg_type_t cfg_type_qstringornone = { */ static void -print_hostname(cfg_printer_t *pctx, cfg_obj_t *obj) { +print_hostname(cfg_printer_t *pctx, const cfg_obj_t *obj) { UNUSED(obj); cfg_print_chars(pctx, "hostname", 4); } @@ -1127,7 +1127,7 @@ parse_optional_keyvalue(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t ** } static void -print_keyvalue(cfg_printer_t *pctx, cfg_obj_t *obj) { +print_keyvalue(cfg_printer_t *pctx, const cfg_obj_t *obj) { const keyword_type_t *kw = obj->type->of; cfg_print_cstr(pctx, kw->name); cfg_print_chars(pctx, " ", 1); @@ -1332,7 +1332,7 @@ parse_querysource6(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) } static void -print_querysource(cfg_printer_t *pctx, cfg_obj_t *obj) { +print_querysource(cfg_printer_t *pctx, const cfg_obj_t *obj) { isc_netaddr_t na; isc_netaddr_fromsockaddr(&na, &obj->value.sockaddr); cfg_print_chars(pctx, "address ", 8); @@ -1408,7 +1408,7 @@ static cfg_tuplefielddef_t negated_fields[] = { }; static void -print_negated(cfg_printer_t *pctx, cfg_obj_t *obj) { +print_negated(cfg_printer_t *pctx, const cfg_obj_t *obj) { cfg_print_chars(pctx, "!", 1); cfg_print_tuple(pctx, obj); } @@ -1625,7 +1625,7 @@ parse_logfile(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { } static void -print_logfile(cfg_printer_t *pctx, cfg_obj_t *obj) { +print_logfile(cfg_printer_t *pctx, const cfg_obj_t *obj) { cfg_print_obj(pctx, obj->value.tuple[0]); /* file */ if (obj->value.tuple[1]->type->print != cfg_print_void) { cfg_print_chars(pctx, " versions ", 10); diff --git a/contrib/bind9/lib/isccfg/parser.c b/contrib/bind9/lib/isccfg/parser.c index f72c3c2..42ce9f0 100644 --- a/contrib/bind9/lib/isccfg/parser.c +++ b/contrib/bind9/lib/isccfg/parser.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2004 Internet Systems Consortium, Inc. ("ISC") + * Copyright (C) 2004, 2006 Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 2000-2003 Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: parser.c,v 1.70.2.20.2.18 2004/05/15 03:46:13 jinmei Exp $ */ +/* $Id: parser.c,v 1.70.2.20.2.21 2006/02/28 06:32:54 marka Exp $ */ #include <config.h> @@ -68,7 +68,7 @@ static isc_result_t parse_list(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret); static void -print_list(cfg_printer_t *pctx, cfg_obj_t *obj); +print_list(cfg_printer_t *pctx, const cfg_obj_t *obj); static void free_list(cfg_parser_t *pctx, cfg_obj_t *obj); @@ -134,7 +134,7 @@ static cfg_type_t cfg_type_implicitlist = { /* Functions. */ void -cfg_print_obj(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_obj(cfg_printer_t *pctx, const cfg_obj_t *obj) { obj->type->print(pctx, obj); } @@ -177,7 +177,7 @@ cfg_parse_obj(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { } void -cfg_print(cfg_obj_t *obj, +cfg_print(const cfg_obj_t *obj, void (*f)(void *closure, const char *text, int textlen), void *closure) { @@ -243,14 +243,14 @@ cfg_parse_tuple(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) } void -cfg_print_tuple(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_tuple(cfg_printer_t *pctx, const cfg_obj_t *obj) { unsigned int i; const cfg_tuplefielddef_t *fields = obj->type->of; const cfg_tuplefielddef_t *f; isc_boolean_t need_space = ISC_FALSE; for (f = fields, i = 0; f->name != NULL; f++, i++) { - cfg_obj_t *fieldobj = obj->value.tuple[i]; + const cfg_obj_t *fieldobj = obj->value.tuple[i]; if (need_space) cfg_print_chars(pctx, " ", 1); cfg_print_obj(pctx, fieldobj); @@ -291,13 +291,13 @@ free_tuple(cfg_parser_t *pctx, cfg_obj_t *obj) { } isc_boolean_t -cfg_obj_istuple(cfg_obj_t *obj) { +cfg_obj_istuple(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_tuple)); } -cfg_obj_t * -cfg_tuple_get(cfg_obj_t *tupleobj, const char* name) { +const cfg_obj_t * +cfg_tuple_get(const cfg_obj_t *tupleobj, const char* name) { unsigned int i; const cfg_tuplefielddef_t *fields; const cfg_tuplefielddef_t *f; @@ -548,7 +548,7 @@ cfg_parse_void(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { } void -cfg_print_void(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_void(cfg_printer_t *pctx, const cfg_obj_t *obj) { UNUSED(pctx); UNUSED(obj); } @@ -560,7 +560,7 @@ cfg_doc_void(cfg_printer_t *pctx, const cfg_type_t *type) { } isc_boolean_t -cfg_obj_isvoid(cfg_obj_t *obj) { +cfg_obj_isvoid(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_void)); } @@ -606,18 +606,18 @@ cfg_print_rawuint(cfg_printer_t *pctx, unsigned int u) { } void -cfg_print_uint32(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_uint32(cfg_printer_t *pctx, const cfg_obj_t *obj) { cfg_print_rawuint(pctx, obj->value.uint32); } isc_boolean_t -cfg_obj_isuint32(cfg_obj_t *obj) { +cfg_obj_isuint32(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_uint32)); } isc_uint32_t -cfg_obj_asuint32(cfg_obj_t *obj) { +cfg_obj_asuint32(const cfg_obj_t *obj) { REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_uint32); return (obj->value.uint32); } @@ -632,19 +632,19 @@ cfg_type_t cfg_type_uint32 = { * uint64 */ isc_boolean_t -cfg_obj_isuint64(cfg_obj_t *obj) { +cfg_obj_isuint64(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_uint64)); } isc_uint64_t -cfg_obj_asuint64(cfg_obj_t *obj) { +cfg_obj_asuint64(const cfg_obj_t *obj) { REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_uint64); return (obj->value.uint64); } void -cfg_print_uint64(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_uint64(cfg_printer_t *pctx, const cfg_obj_t *obj) { char buf[32]; snprintf(buf, sizeof(buf), "%" ISC_PRINT_QUADFORMAT "u", obj->value.uint64); @@ -723,7 +723,9 @@ parse_ustring(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { } isc_result_t -cfg_parse_astring(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { +cfg_parse_astring(cfg_parser_t *pctx, const cfg_type_t *type, + cfg_obj_t **ret) +{ isc_result_t result; UNUSED(type); @@ -781,12 +783,12 @@ cfg_doc_enum(cfg_printer_t *pctx, const cfg_type_t *type) { } void -cfg_print_ustring(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_ustring(cfg_printer_t *pctx, const cfg_obj_t *obj) { cfg_print_chars(pctx, obj->value.string.base, obj->value.string.length); } static void -print_qstring(cfg_printer_t *pctx, cfg_obj_t *obj) { +print_qstring(cfg_printer_t *pctx, const cfg_obj_t *obj) { cfg_print_chars(pctx, "\"", 1); cfg_print_ustring(pctx, obj); cfg_print_chars(pctx, "\"", 1); @@ -799,13 +801,13 @@ free_string(cfg_parser_t *pctx, cfg_obj_t *obj) { } isc_boolean_t -cfg_obj_isstring(cfg_obj_t *obj) { +cfg_obj_isstring(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_string)); } -char * -cfg_obj_asstring(cfg_obj_t *obj) { +const char * +cfg_obj_asstring(const cfg_obj_t *obj) { REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_string); return (obj->value.string.base); } @@ -833,13 +835,13 @@ cfg_type_t cfg_type_astring = { */ isc_boolean_t -cfg_obj_isboolean(cfg_obj_t *obj) { +cfg_obj_isboolean(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_boolean)); } isc_boolean_t -cfg_obj_asboolean(cfg_obj_t *obj) { +cfg_obj_asboolean(const cfg_obj_t *obj) { REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_boolean); return (obj->value.boolean); } @@ -885,7 +887,7 @@ parse_boolean(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) } static void -print_boolean(cfg_printer_t *pctx, cfg_obj_t *obj) { +print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) { if (obj->value.boolean) cfg_print_chars(pctx, "yes", 3); else @@ -999,9 +1001,9 @@ parse_list(cfg_parser_t *pctx, const cfg_type_t *listtype, cfg_obj_t **ret) } static void -print_list(cfg_printer_t *pctx, cfg_obj_t *obj) { - cfg_list_t *list = &obj->value.list; - cfg_listelt_t *elt; +print_list(cfg_printer_t *pctx, const cfg_obj_t *obj) { + const cfg_list_t *list = &obj->value.list; + const cfg_listelt_t *elt; for (elt = ISC_LIST_HEAD(*list); elt != NULL; @@ -1025,7 +1027,7 @@ cfg_parse_bracketed_list(cfg_parser_t *pctx, const cfg_type_t *type, } void -cfg_print_bracketed_list(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_bracketed_list(cfg_printer_t *pctx, const cfg_obj_t *obj) { print_open(pctx); print_list(pctx, obj); print_close(pctx); @@ -1072,9 +1074,9 @@ cfg_parse_spacelist(cfg_parser_t *pctx, const cfg_type_t *listtype, } void -cfg_print_spacelist(cfg_printer_t *pctx, cfg_obj_t *obj) { - cfg_list_t *list = &obj->value.list; - cfg_listelt_t *elt; +cfg_print_spacelist(cfg_printer_t *pctx, const cfg_obj_t *obj) { + const cfg_list_t *list = &obj->value.list; + const cfg_listelt_t *elt; for (elt = ISC_LIST_HEAD(*list); elt != NULL; @@ -1087,27 +1089,27 @@ cfg_print_spacelist(cfg_printer_t *pctx, cfg_obj_t *obj) { isc_boolean_t -cfg_obj_islist(cfg_obj_t *obj) { +cfg_obj_islist(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_list)); } -cfg_listelt_t * -cfg_list_first(cfg_obj_t *obj) { +const cfg_listelt_t * +cfg_list_first(const cfg_obj_t *obj) { REQUIRE(obj == NULL || obj->type->rep == &cfg_rep_list); if (obj == NULL) return (NULL); return (ISC_LIST_HEAD(obj->value.list)); } -cfg_listelt_t * -cfg_list_next(cfg_listelt_t *elt) { +const cfg_listelt_t * +cfg_list_next(const cfg_listelt_t *elt) { REQUIRE(elt != NULL); return (ISC_LIST_NEXT(elt, link)); } -cfg_obj_t * -cfg_listelt_value(cfg_listelt_t *elt) { +const cfg_obj_t * +cfg_listelt_value(const cfg_listelt_t *elt) { REQUIRE(elt != NULL); return (elt->obj); } @@ -1366,7 +1368,7 @@ cfg_parse_addressed_map(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t ** } void -cfg_print_mapbody(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_mapbody(cfg_printer_t *pctx, const cfg_obj_t *obj) { isc_result_t result = ISC_R_SUCCESS; const cfg_clausedef_t * const *clauseset; @@ -1446,7 +1448,7 @@ static struct flagtext { }; void -cfg_print_map(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_map(cfg_printer_t *pctx, const cfg_obj_t *obj) { if (obj->value.map.id != NULL) { cfg_print_obj(pctx, obj->value.map.id); cfg_print_chars(pctx, " ", 1); @@ -1505,16 +1507,16 @@ cfg_doc_map(cfg_printer_t *pctx, const cfg_type_t *type) { } isc_boolean_t -cfg_obj_ismap(cfg_obj_t *obj) { +cfg_obj_ismap(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_map)); } isc_result_t -cfg_map_get(cfg_obj_t *mapobj, const char* name, cfg_obj_t **obj) { +cfg_map_get(const cfg_obj_t *mapobj, const char* name, const cfg_obj_t **obj) { isc_result_t result; isc_symvalue_t val; - cfg_map_t *map; + const cfg_map_t *map; REQUIRE(mapobj != NULL && mapobj->type->rep == &cfg_rep_map); REQUIRE(name != NULL); @@ -1529,8 +1531,8 @@ cfg_map_get(cfg_obj_t *mapobj, const char* name, cfg_obj_t **obj) { return (ISC_R_SUCCESS); } -cfg_obj_t * -cfg_map_getname(cfg_obj_t *mapobj) { +const cfg_obj_t * +cfg_map_getname(const cfg_obj_t *mapobj) { REQUIRE(mapobj != NULL && mapobj->type->rep == &cfg_rep_map); return (mapobj->value.map.id); } @@ -1556,12 +1558,19 @@ parse_token(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { isc_lex_getlasttokentext(pctx->lexer, &pctx->token, &r); obj->value.string.base = isc_mem_get(pctx->mctx, r.length + 1); + if (obj->value.string.base == NULL) { + result = ISC_R_NOMEMORY; + goto cleanup; + } obj->value.string.length = r.length; memcpy(obj->value.string.base, r.base, r.length); obj->value.string.base[r.length] = '\0'; *ret = obj; + return (result); cleanup: + if (obj != NULL) + isc_mem_put(pctx->mctx, obj, sizeof(*obj)); return (result); } @@ -1753,7 +1762,7 @@ cfg_parse_rawport(cfg_parser_t *pctx, unsigned int flags, in_port_t *port) { } void -cfg_print_rawaddr(cfg_printer_t *pctx, isc_netaddr_t *na) { +cfg_print_rawaddr(cfg_printer_t *pctx, const isc_netaddr_t *na) { isc_result_t result; char text[128]; isc_buffer_t buf; @@ -1843,21 +1852,22 @@ cfg_parse_netprefix(cfg_parser_t *pctx, const cfg_type_t *type, } static void -print_netprefix(cfg_printer_t *pctx, cfg_obj_t *obj) { - cfg_netprefix_t *p = &obj->value.netprefix; +print_netprefix(cfg_printer_t *pctx, const cfg_obj_t *obj) { + const cfg_netprefix_t *p = &obj->value.netprefix; + cfg_print_rawaddr(pctx, &p->address); cfg_print_chars(pctx, "/", 1); cfg_print_rawuint(pctx, p->prefixlen); } isc_boolean_t -cfg_obj_isnetprefix(cfg_obj_t *obj) { +cfg_obj_isnetprefix(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_netprefix)); } void -cfg_obj_asnetprefix(cfg_obj_t *obj, isc_netaddr_t *netaddr, +cfg_obj_asnetprefix(const cfg_obj_t *obj, isc_netaddr_t *netaddr, unsigned int *prefixlen) { REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_netprefix); *netaddr = obj->value.netprefix.address; @@ -1908,7 +1918,7 @@ cfg_parse_sockaddr(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) } void -cfg_print_sockaddr(cfg_printer_t *pctx, cfg_obj_t *obj) { +cfg_print_sockaddr(cfg_printer_t *pctx, const cfg_obj_t *obj) { isc_netaddr_t netaddr; in_port_t port; char buf[ISC_NETADDR_FORMATSIZE]; @@ -1929,8 +1939,6 @@ cfg_doc_sockaddr(cfg_printer_t *pctx, const cfg_type_t *type) { int n = 0; cfg_print_chars(pctx, "( ", 2); if (*flagp & CFG_ADDR_V4OK) { - if (n != 0) - cfg_print_chars(pctx, " | ", 3); cfg_print_cstr(pctx, "<ipv4_address>"); n++; } @@ -1955,13 +1963,13 @@ cfg_doc_sockaddr(cfg_printer_t *pctx, const cfg_type_t *type) { } isc_boolean_t -cfg_obj_issockaddr(cfg_obj_t *obj) { +cfg_obj_issockaddr(const cfg_obj_t *obj) { REQUIRE(obj != NULL); return (ISC_TF(obj->type->rep == &cfg_rep_sockaddr)); } -isc_sockaddr_t * -cfg_obj_assockaddr(cfg_obj_t *obj) { +const isc_sockaddr_t * +cfg_obj_assockaddr(const cfg_obj_t *obj) { REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_sockaddr); return (&obj->value.sockaddr); } @@ -2158,7 +2166,8 @@ parser_complain(cfg_parser_t *pctx, isc_boolean_t is_warning, } void -cfg_obj_log(cfg_obj_t *obj, isc_log_t *lctx, int level, const char *fmt, ...) { +cfg_obj_log(const cfg_obj_t *obj, isc_log_t *lctx, int level, + const char *fmt, ...) { va_list ap; char msgbuf[2048]; @@ -2176,12 +2185,12 @@ cfg_obj_log(cfg_obj_t *obj, isc_log_t *lctx, int level, const char *fmt, ...) { } const char * -cfg_obj_file(cfg_obj_t *obj) { +cfg_obj_file(const cfg_obj_t *obj) { return (obj->file); } unsigned int -cfg_obj_line(cfg_obj_t *obj) { +cfg_obj_line(const cfg_obj_t *obj) { return (obj->line); } @@ -2223,7 +2232,6 @@ create_map(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) { CHECK(isc_symtab_create(pctx->mctx, 5, /* XXX */ map_symtabitem_destroy, pctx, ISC_FALSE, &symtab)); - obj->value.map.symtab = symtab; obj->value.map.id = NULL; @@ -2243,7 +2251,7 @@ free_map(cfg_parser_t *pctx, cfg_obj_t *obj) { } isc_boolean_t -cfg_obj_istype(cfg_obj_t *obj, const cfg_type_t *type) { +cfg_obj_istype(const cfg_obj_t *obj, const cfg_type_t *type) { return (ISC_TF(obj->type == type)); } |