Lines Matching defs:obj

49 #define CLEANUP_OBJ(obj) \
50 do { if ((obj) != NULL) cfg_obj_destroy(pctx, &(obj)); } while (0)
58 free_tuple(cfg_parser_t *pctx, cfg_obj_t *obj);
64 print_list(cfg_printer_t *pctx, const cfg_obj_t *obj);
67 free_list(cfg_parser_t *pctx, cfg_obj_t *obj);
77 free_string(cfg_parser_t *pctx, cfg_obj_t *obj);
83 free_map(cfg_parser_t *pctx, cfg_obj_t *obj);
91 free_noop(cfg_parser_t *pctx, cfg_obj_t *obj);
135 cfg_print_obj(cfg_printer_t *pctx, const cfg_obj_t *obj) {
137 REQUIRE(obj != NULL);
139 obj->type->print(pctx, obj);
198 cfg_print(const cfg_obj_t *obj,
202 REQUIRE(obj != NULL);
205 cfg_printx(obj, 0, f, closure);
209 cfg_printx(const cfg_obj_t *obj, unsigned int flags,
215 REQUIRE(obj != NULL);
222 obj->type->print(&pctx, obj);
232 cfg_obj_t *obj = NULL;
243 CHECK(cfg_create_obj(pctx, type, &obj));
244 obj->value.tuple = isc_mem_get(pctx->mctx,
246 if (obj->value.tuple == NULL) {
251 obj->value.tuple[i] = NULL;
252 *ret = obj;
256 if (obj != NULL)
257 isc_mem_put(pctx->mctx, obj, sizeof(*obj));
267 cfg_obj_t *obj = NULL;
274 CHECK(cfg_create_tuple(pctx, type, &obj));
276 CHECK(cfg_parse_obj(pctx, f->type, &obj->value.tuple[i]));
278 *ret = obj;
282 CLEANUP_OBJ(obj);
287 cfg_print_tuple(cfg_printer_t *pctx, const cfg_obj_t *obj) {
294 REQUIRE(obj != NULL);
296 fields = obj->type->of;
299 const cfg_obj_t *fieldobj = obj->value.tuple[i];
328 free_tuple(cfg_parser_t *pctx, cfg_obj_t *obj) {
330 const cfg_tuplefielddef_t *fields = obj->type->of;
334 if (obj->value.tuple == NULL)
338 CLEANUP_OBJ(obj->value.tuple[i]);
341 isc_mem_put(pctx->mctx, obj->value.tuple,
346 cfg_obj_istuple(const cfg_obj_t *obj) {
347 REQUIRE(obj != NULL);
348 return (ISC_TF(obj->type->rep == &cfg_rep_tuple));
515 elt->obj = stringobj;
556 cfg_obj_t *obj = NULL;
558 result = cfg_parse_obj(pctx, type, &obj);
576 *ret = obj;
580 CLEANUP_OBJ(obj);
699 cfg_print_void(cfg_printer_t *pctx, const cfg_obj_t *obj) {
702 REQUIRE(obj != NULL);
705 UNUSED(obj);
719 cfg_obj_isvoid(const cfg_obj_t *obj) {
720 REQUIRE(obj != NULL);
721 return (ISC_TF(obj->type->rep == &cfg_rep_void));
737 cfg_obj_t *obj = NULL;
759 CHECK(cfg_create_obj(pctx, &cfg_type_percentage, &obj));
760 obj->value.uint32 = (isc_uint32_t)percent;
761 *ret = obj;
768 cfg_print_percentage(cfg_printer_t *pctx, const cfg_obj_t *obj) {
773 REQUIRE(obj != NULL);
775 n = snprintf(buf, sizeof(buf), "%u%%", obj->value.uint32);
781 cfg_obj_aspercentage(const cfg_obj_t *obj) {
782 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_percentage);
783 return (obj->value.uint32);
792 cfg_obj_ispercentage(const cfg_obj_t *obj) {
793 REQUIRE(obj != NULL);
794 return (ISC_TF(obj->type->rep == &cfg_rep_percentage));
805 cfg_obj_t *obj = NULL;
835 CHECK(cfg_create_obj(pctx, &cfg_type_fixedpoint, &obj));
837 obj->value.uint32 = strtoul(p, NULL, 10) * 100;
840 obj->value.uint32 += strtoul(p + n1 + n2, NULL, 10);
843 obj->value.uint32 += strtoul(p + n1 + n2, NULL, 10) * 10;
846 *ret = obj;
853 cfg_print_fixedpoint(cfg_printer_t *pctx, const cfg_obj_t *obj) {
858 REQUIRE(obj != NULL);
861 obj->value.uint32/100, obj->value.uint32%100);
867 cfg_obj_asfixedpoint(const cfg_obj_t *obj) {
868 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_fixedpoint);
869 return (obj->value.uint32);
878 cfg_obj_isfixedpoint(const cfg_obj_t *obj) {
879 REQUIRE(obj != NULL);
880 return (ISC_TF(obj->type->rep == &cfg_rep_fixedpoint));
889 cfg_obj_t *obj = NULL;
902 CHECK(cfg_create_obj(pctx, &cfg_type_uint32, &obj));
904 obj->value.uint32 = pctx->token.value.as_ulong;
905 *ret = obj;
924 cfg_print_uint32(cfg_printer_t *pctx, const cfg_obj_t *obj) {
925 cfg_print_rawuint(pctx, obj->value.uint32);
929 cfg_obj_isuint32(const cfg_obj_t *obj) {
930 REQUIRE(obj != NULL);
931 return (ISC_TF(obj->type->rep == &cfg_rep_uint32));
935 cfg_obj_asuint32(const cfg_obj_t *obj) {
936 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_uint32);
937 return (obj->value.uint32);
950 cfg_obj_isuint64(const cfg_obj_t *obj) {
951 REQUIRE(obj != NULL);
952 return (ISC_TF(obj->type->rep == &cfg_rep_uint64));
956 cfg_obj_asuint64(const cfg_obj_t *obj) {
957 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_uint64);
958 return (obj->value.uint64);
962 cfg_print_uint64(cfg_printer_t *pctx, const cfg_obj_t *obj) {
966 obj->value.uint64);
986 cfg_obj_t *obj = NULL;
989 CHECK(cfg_create_obj(pctx, type, &obj));
991 obj->value.string.length = len;
992 obj->value.string.base = isc_mem_get(pctx->mctx, len + 1);
993 if (obj->value.string.base == 0) {
994 isc_mem_put(pctx->mctx, obj, sizeof(*obj));
997 memmove(obj->value.string.base, contents, len);
998 obj->value.string.base[len] = '\0';
1000 *ret = obj;
1107 print_btext(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1117 cfg_print_chars(pctx, obj->value.string.base, obj->value.string.length);
1144 check_enum(cfg_parser_t *pctx, cfg_obj_t *obj, const char *const *enums) {
1145 const char *s = obj->value.string.base;
1156 cfg_obj_t *obj = NULL;
1162 CHECK(parse_ustring(pctx, NULL, &obj));
1163 CHECK(check_enum(pctx, obj, type->of));
1164 *ret = obj;
1167 CLEANUP_OBJ(obj);
1188 cfg_print_ustring(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1190 REQUIRE(obj != NULL);
1192 cfg_print_chars(pctx, obj->value.string.base, obj->value.string.length);
1196 print_qstring(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1198 cfg_print_ustring(pctx, obj);
1203 print_sstring(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1206 unsigned int len = obj->value.string.length;
1210 cfg_print_ustring(pctx, obj);
1215 free_string(cfg_parser_t *pctx, cfg_obj_t *obj) {
1216 isc_mem_put(pctx->mctx, obj->value.string.base,
1217 obj->value.string.length + 1);
1221 cfg_obj_isstring(const cfg_obj_t *obj) {
1222 REQUIRE(obj != NULL);
1223 return (ISC_TF(obj->type->rep == &cfg_rep_string));
1227 cfg_obj_asstring(const cfg_obj_t *obj) {
1228 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_string);
1229 return (obj->value.string.base);
1274 cfg_obj_isboolean(const cfg_obj_t *obj) {
1275 REQUIRE(obj != NULL);
1276 return (ISC_TF(obj->type->rep == &cfg_rep_boolean));
1280 cfg_obj_asboolean(const cfg_obj_t *obj) {
1281 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_boolean);
1282 return (obj->value.boolean);
1290 cfg_obj_t *obj = NULL;
1316 CHECK(cfg_create_obj(pctx, &cfg_type_boolean, &obj));
1317 obj->value.boolean = value;
1318 *ret = obj;
1330 cfg_print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1332 REQUIRE(obj != NULL);
1334 if (obj->value.boolean)
1350 cfg_create_list(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **obj) {
1355 REQUIRE(obj != NULL && *obj == NULL);
1357 CHECK(cfg_create_obj(pctx, type, obj));
1358 ISC_LIST_INIT((*obj)->value.list);
1370 elt->obj = NULL;
1378 if (elt->obj != NULL)
1379 cfg_obj_destroy(pctx, &elt->obj);
1384 free_list(cfg_parser_t *pctx, cfg_obj_t *obj) {
1386 for (elt = ISC_LIST_HEAD(obj->value.list);
1413 elt->obj = value;
1458 print_list(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1459 const cfg_list_t *list = &obj->value.list;
1467 cfg_print_obj(pctx, elt->obj);
1471 cfg_print_obj(pctx, elt->obj);
1495 cfg_print_bracketed_list(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1497 REQUIRE(obj != NULL);
1500 print_list(pctx, obj);
1552 cfg_print_spacelist(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1553 const cfg_list_t *list = &obj->value.list;
1557 REQUIRE(obj != NULL);
1562 cfg_print_obj(pctx, elt->obj);
1569 cfg_obj_islist(const cfg_obj_t *obj) {
1570 REQUIRE(obj != NULL);
1571 return (ISC_TF(obj->type->rep == &cfg_rep_list));
1575 cfg_list_first(const cfg_obj_t *obj) {
1576 REQUIRE(obj == NULL || obj->type->rep == &cfg_rep_list);
1577 if (obj == NULL)
1579 return (ISC_LIST_HEAD(obj->value.list));
1589 * Return the length of a list object. If obj is NULL or is not
1593 cfg_list_length(const cfg_obj_t *obj, isc_boolean_t recurse) {
1597 if (obj == NULL || !cfg_obj_islist(obj))
1599 for (elt = cfg_list_first(obj);
1602 if (recurse && cfg_obj_islist(elt->obj)) {
1603 count += cfg_list_length(elt->obj, recurse);
1614 return (elt->obj);
1639 cfg_obj_t *obj = NULL;
1649 CHECK(create_map(pctx, type, &obj));
1651 obj->value.map.clausesets = clausesets;
1742 result = isc_symtab_lookup(obj->value.map.symtab,
1753 result = isc_symtab_define(obj->value.
1784 obj->value.map.symtab,
1801 *ret = obj;
1806 CLEANUP_OBJ(obj);
1818 cfg_obj_t *obj = NULL;
1821 CHECK(cfg_parse_obj(pctx, elttype, &obj));
1824 CHECK(pctx->callback(name, obj, pctx->callbackarg));
1826 symval.as_pointer = obj;
1833 CLEANUP_OBJ(obj);
1910 print_symval(cfg_printer_t *pctx, const char *name, cfg_obj_t *obj) {
1916 cfg_print_obj(pctx, obj);
1925 cfg_print_mapbody(cfg_printer_t *pctx, const cfg_obj_t *obj) {
1930 REQUIRE(obj != NULL);
1932 for (clauseset = obj->value.map.clausesets;
1942 result = isc_symtab_lookup(obj->value.map.symtab,
1955 elt->obj);
2024 cfg_print_map(cfg_printer_t *pctx, const cfg_obj_t *obj) {
2026 REQUIRE(obj != NULL);
2028 if (obj->value.map.id != NULL) {
2029 cfg_print_obj(pctx, obj->value.map.id);
2033 cfg_print_mapbody(pctx, obj);
2074 cfg_obj_ismap(const cfg_obj_t *obj) {
2075 REQUIRE(obj != NULL);
2076 return (ISC_TF(obj->type->rep == &cfg_rep_map));
2080 cfg_map_get(const cfg_obj_t *mapobj, const char* name, const cfg_obj_t **obj) {
2087 REQUIRE(obj != NULL && *obj == NULL);
2094 *obj = val.as_pointer;
2166 cfg_obj_t *obj = NULL;
2172 CHECK(cfg_create_obj(pctx, &cfg_type_token, &obj));
2182 obj->value.string.base = isc_mem_get(pctx->mctx, r.length + 1);
2183 if (obj->value.string.base == NULL) {
2187 obj->value.string.length = r.length;
2188 memmove(obj->value.string.base, r.base, r.length);
2189 obj->value.string.base[r.length] = '\0';
2190 *ret = obj;
2194 if (obj != NULL)
2195 isc_mem_put(pctx->mctx, obj, sizeof(*obj));
2464 cfg_obj_t *obj = NULL;
2468 CHECK(cfg_create_obj(pctx, type, &obj));
2470 isc_sockaddr_fromnetaddr(&obj->value.sockaddr, &netaddr, 0);
2471 *ret = obj;
2474 CLEANUP_OBJ(obj);
2536 cfg_obj_t *obj = NULL;
2578 CHECK(cfg_create_obj(pctx, &cfg_type_netprefix, &obj));
2579 obj->value.netprefix.address = netaddr;
2580 obj->value.netprefix.prefixlen = prefixlen;
2581 *ret = obj;
2589 print_netprefix(cfg_printer_t *pctx, const cfg_obj_t *obj) {
2590 const cfg_netprefix_t *p = &obj->value.netprefix;
2598 cfg_obj_isnetprefix(const cfg_obj_t *obj) {
2599 REQUIRE(obj != NULL);
2600 return (ISC_TF(obj->type->rep == &cfg_rep_netprefix));
2604 cfg_obj_asnetprefix(const cfg_obj_t *obj, isc_netaddr_t *netaddr,
2607 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_netprefix);
2611 *netaddr = obj->value.netprefix.address;
2612 *prefixlen = obj->value.netprefix.prefixlen;
2628 cfg_obj_t *obj = NULL;
2631 CHECK(cfg_create_obj(pctx, type, &obj));
2662 isc_sockaddr_fromnetaddr(&obj->value.sockaddr, &netaddr, port);
2663 obj->value.sockaddrdscp.dscp = dscp;
2664 *ret = obj;
2668 CLEANUP_OBJ(obj);
2699 cfg_print_sockaddr(cfg_printer_t *pctx, const cfg_obj_t *obj) {
2705 REQUIRE(obj != NULL);
2707 isc_netaddr_fromsockaddr(&netaddr, &obj->value.sockaddr);
2710 port = isc_sockaddr_getport(&obj->value.sockaddr);
2715 if (obj->value.sockaddrdscp.dscp != -1) {
2717 cfg_print_rawuint(pctx, obj->value.sockaddrdscp.dscp);
2759 cfg_obj_issockaddr(const cfg_obj_t *obj) {
2760 REQUIRE(obj != NULL);
2761 return (ISC_TF(obj->type->rep == &cfg_rep_sockaddr));
2765 cfg_obj_assockaddr(const cfg_obj_t *obj) {
2766 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_sockaddr);
2767 return (&obj->value.sockaddr);
2771 cfg_obj_getdscp(const cfg_obj_t *obj) {
2772 REQUIRE(obj != NULL && obj->type->rep == &cfg_rep_sockaddr);
2773 return (obj->value.sockaddrdscp.dscp);
2932 fileobj = elt->obj;
3003 cfg_obj_log(const cfg_obj_t *obj, isc_log_t *lctx, int level,
3008 REQUIRE(obj != NULL);
3018 if (obj->file != NULL) {
3020 "%s:%u: %s", obj->file, obj->line, msgbuf);
3027 cfg_obj_file(const cfg_obj_t *obj) {
3028 REQUIRE(obj != NULL);
3030 return (obj->file);
3034 cfg_obj_line(const cfg_obj_t *obj) {
3035 REQUIRE(obj != NULL);
3037 return (obj->line);
3043 cfg_obj_t *obj;
3049 obj = isc_mem_get(pctx->mctx, sizeof(cfg_obj_t));
3050 if (obj == NULL)
3053 obj->type = type;
3054 obj->file = current_file(pctx);
3055 obj->line = pctx->line;
3056 obj->pctx = pctx;
3058 result = isc_refcount_init(&obj->references, 1);
3060 isc_mem_put(pctx->mctx, obj, sizeof(cfg_obj_t));
3063 *ret = obj;
3073 cfg_obj_t *obj = symval.as_pointer;
3079 cfg_obj_destroy(pctx, &obj);
3086 cfg_obj_t *obj = NULL;
3088 CHECK(cfg_create_obj(pctx, type, &obj));
3092 obj->value.map.symtab = symtab;
3093 obj->value.map.id = NULL;
3095 *ret = obj;
3099 if (obj != NULL)
3100 isc_mem_put(pctx->mctx, obj, sizeof(*obj));
3105 free_map(cfg_parser_t *pctx, cfg_obj_t *obj) {
3106 CLEANUP_OBJ(obj->value.map.id);
3107 isc_symtab_destroy(&obj->value.map.symtab);
3111 cfg_obj_istype(const cfg_obj_t *obj, const cfg_type_t *type) {
3113 REQUIRE(obj != NULL);
3116 return (ISC_TF(obj->type == type));
3120 * Destroy 'obj', a configuration object created in 'pctx'.
3124 cfg_obj_t *obj;
3130 obj = *objp;
3132 isc_refcount_decrement(&obj->references, &refs);
3134 obj->type->rep->free(pctx, obj);
3135 isc_refcount_destroy(&obj->references);
3136 isc_mem_put(pctx->mctx, obj, sizeof(cfg_obj_t));
3151 free_noop(cfg_parser_t *pctx, cfg_obj_t *obj) {
3153 UNUSED(obj);
3190 cfg_obj_t *obj, const char *clausename)
3202 REQUIRE(obj != NULL);
3226 cfg_obj_attach(obj, &elt->obj);
3230 symval.as_pointer = obj;
3241 cfg_obj_attach(obj, &elt->obj);