From: Arran Cudbard-Bell Date: Mon, 14 Nov 2022 23:04:00 +0000 (-0600) Subject: Use type safe functions for value box lists X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=587fcafdcd3350cba4319cbc3c5f2ce9fc8ec2f4;p=thirdparty%2Ffreeradius-server.git Use type safe functions for value box lists --- diff --git a/src/bin/unit_test_attribute.c b/src/bin/unit_test_attribute.c index 845e332d4ac..086e3732485 100644 --- a/src/bin/unit_test_attribute.c +++ b/src/bin/unit_test_attribute.c @@ -253,7 +253,7 @@ typedef struct { static xlat_action_t xlat_test(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, UNUSED request_t *request, - UNUSED fr_value_box_list_t *in) + UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { return XLAT_ACTION_DONE; } diff --git a/src/bin/unit_test_module.c b/src/bin/unit_test_module.c index 8acee68cfd0..ca6f25df045 100644 --- a/src/bin/unit_test_module.c +++ b/src/bin/unit_test_module.c @@ -529,7 +529,7 @@ static int map_proc_verify(CONF_SECTION *cs, UNUSED void *mod_inst, UNUSED void } static rlm_rcode_t mod_map_proc(UNUSED void *mod_inst, UNUSED void *proc_inst, UNUSED request_t *request, - UNUSED fr_value_box_list_t *src, UNUSED map_list_t const *maps) + UNUSED FR_DLIST_HEAD(fr_value_box_list) *src, UNUSED map_list_t const *maps) { return RLM_MODULE_FAIL; } diff --git a/src/lib/eap_aka_sim/xlat.c b/src/lib/eap_aka_sim/xlat.c index 09f9ba5c570..2692fcf8f22 100644 --- a/src/lib/eap_aka_sim/xlat.c +++ b/src/lib/eap_aka_sim/xlat.c @@ -47,12 +47,12 @@ static xlat_arg_parser_t const aka_sim_xlat_id_method_xlat_args[] = { static xlat_action_t aka_sim_xlat_id_method_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, request_t *request, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { char const *method; fr_aka_sim_id_type_t type_hint; fr_aka_sim_method_hint_t method_hint; - fr_value_box_t *id = fr_dlist_head(in); + fr_value_box_t *id = fr_value_box_list_head(in); fr_value_box_t *vb; if (fr_aka_sim_id_type(&type_hint, &method_hint, id->vb_strvalue, id->vb_length) < 0) { @@ -103,12 +103,12 @@ static xlat_arg_parser_t const aka_sim_xlat_id_type_xlat_args[] = { */ static xlat_action_t aka_sim_xlat_id_type_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { char const *type; fr_aka_sim_id_type_t type_hint; fr_aka_sim_method_hint_t method_hint; - fr_value_box_t *id = fr_dlist_head(in); + fr_value_box_t *id = fr_value_box_list_head(in); fr_value_box_t *vb; if (fr_aka_sim_id_type(&type_hint, &method_hint, id->vb_strvalue, id->vb_length) < 0) { @@ -159,9 +159,9 @@ static xlat_arg_parser_t const aka_sim_id_3gpp_temporary_id_key_index_xlat_args[ */ static xlat_action_t aka_sim_id_3gpp_temporary_id_key_index_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *id = fr_dlist_head(in); + fr_value_box_t *id = fr_value_box_list_head(in); fr_value_box_t *vb; if (id->vb_length != AKA_SIM_3GPP_PSEUDONYM_LEN) { @@ -224,23 +224,23 @@ xlat_arg_parser_t aka_sim_3gpp_temporary_id_decrypt_xlat_args[] = { */ static xlat_action_t aka_sim_3gpp_temporary_id_decrypt_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { uint8_t tag; char out_tag = '\0', *buff; char decrypted[AKA_SIM_IMSI_MAX_LEN + 1]; - fr_value_box_t *id_vb = fr_dlist_head(in); + fr_value_box_t *id_vb = fr_value_box_list_head(in); char const *id = id_vb->vb_strvalue; size_t id_len = id_vb->vb_length; - fr_value_box_t *key_vb = fr_dlist_next(in, id_vb); + fr_value_box_t *key_vb = fr_value_box_list_next(in, id_vb); /* coverity[dereference] */ uint8_t const *key = key_vb->vb_octets; size_t key_len = key_vb->vb_length; - fr_value_box_t *tag_vb = fr_dlist_next(in, key_vb); + fr_value_box_t *tag_vb = fr_value_box_list_next(in, key_vb); bool include_tag = true; fr_value_box_t *vb; @@ -342,7 +342,7 @@ xlat_arg_parser_t aka_sim_3gpp_temporary_id_encrypt_xlat_args[] = { */ static xlat_action_t aka_sim_3gpp_temporary_id_encrypt_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { char encrypted[AKA_SIM_3GPP_PSEUDONYM_LEN + 1]; uint8_t tag = 0; @@ -351,19 +351,19 @@ static xlat_action_t aka_sim_3gpp_temporary_id_encrypt_xlat(TALLOC_CTX *ctx, fr_ fr_aka_sim_id_type_t type_hint; fr_aka_sim_method_hint_t method_hint; - fr_value_box_t *id_vb = fr_dlist_head(in); + fr_value_box_t *id_vb = fr_value_box_list_head(in); char const *id = id_vb->vb_strvalue; size_t id_len = id_vb->vb_length; - fr_value_box_t *key_vb = fr_dlist_next(in, id_vb); + fr_value_box_t *key_vb = fr_value_box_list_next(in, id_vb); /* coverity[dereference] */ uint8_t const *key = key_vb->vb_octets; size_t key_len = key_vb->vb_length; - fr_value_box_t *index_vb = fr_dlist_next(in, key_vb); + fr_value_box_t *index_vb = fr_value_box_list_next(in, key_vb); uint8_t key_index = index_vb->vb_uint8; - fr_value_box_t *type_vb = fr_dlist_next(in, index_vb); + fr_value_box_t *type_vb = fr_value_box_list_next(in, index_vb); bool fastauth = false; diff --git a/src/lib/json/base.h b/src/lib/json/base.h index 4979621fb66..d3b3f8f0ef5 100644 --- a/src/lib/json/base.h +++ b/src/lib/json/base.h @@ -239,7 +239,7 @@ typedef struct fr_jpath_node fr_jpath_node_t; size_t fr_jpath_escape_func(UNUSED request_t *request, char *out, size_t outlen, char const *in, UNUSED void *arg); -int fr_jpath_evaluate_leaf(TALLOC_CTX *ctx, fr_value_box_list_t *out, +int fr_jpath_evaluate_leaf(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, fr_type_t dst_type, fr_dict_attr_t const *dst_enumv, json_object *root, fr_jpath_node_t const *jpath); diff --git a/src/lib/json/jpath.c b/src/lib/json/jpath.c index 8f1a0c77461..6360e8d485b 100644 --- a/src/lib/json/jpath.c +++ b/src/lib/json/jpath.c @@ -138,7 +138,7 @@ size_t fr_jpath_escape_func(UNUSED request_t *request, char *out, size_t outlen, * - 0 on no match. * - -1 on error. */ -static int jpath_evaluate(TALLOC_CTX *ctx, fr_value_box_list_t *tail, +static int jpath_evaluate(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *tail, fr_type_t dst_type, fr_dict_attr_t const *dst_enumv, json_object *object, fr_jpath_node_t const *jpath) { @@ -360,7 +360,7 @@ static int jpath_evaluate(TALLOC_CTX *ctx, fr_value_box_list_t *tail, return -1; } - fr_dlist_insert_tail(tail, value); + fr_value_box_list_insert_tail(tail, value); return 1; } @@ -380,7 +380,7 @@ static int jpath_evaluate(TALLOC_CTX *ctx, fr_value_box_list_t *tail, * - 0 on no match. * - -1 on error. */ -int fr_jpath_evaluate_leaf(TALLOC_CTX *ctx, fr_value_box_list_t *out, +int fr_jpath_evaluate_leaf(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, fr_type_t dst_type, fr_dict_attr_t const *dst_enumv, json_object *root, fr_jpath_node_t const *jpath) { diff --git a/src/lib/redis/redis.c b/src/lib/redis/redis.c index a2f397f0e55..6d98c16a06c 100644 --- a/src/lib/redis/redis.c +++ b/src/lib/redis/redis.c @@ -297,7 +297,7 @@ int fr_redis_reply_to_value_box(TALLOC_CTX *ctx, fr_value_box_t *out, redisReply return -1; } if (fr_value_box_bstrndup(ctx, verb, NULL, reply->str, reply->len, true) < 0) return -1; - fr_dlist_insert_head(&out->vb_group, verb); + fr_value_box_list_insert_head(&out->vb_group, verb); vtype = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, true); if (unlikely(!vtype)) { @@ -306,7 +306,7 @@ int fr_redis_reply_to_value_box(TALLOC_CTX *ctx, fr_value_box_t *out, redisReply return -1; } if (fr_value_box_strdup(ctx, vtype, NULL, reply->vtype, true) < 0) return -1; - fr_dlist_insert_head(&out->vb_group, vtype); + fr_value_box_list_insert_head(&out->vb_group, vtype); } break; @@ -328,10 +328,10 @@ int fr_redis_reply_to_value_box(TALLOC_CTX *ctx, fr_value_box_t *out, redisReply vb = fr_value_box_alloc_null(ctx); if (unlikely(!vb)) { array_error: - fr_dlist_talloc_free(&out->vb_group); + fr_value_box_list_talloc_free(&out->vb_group); return -1; } - fr_dlist_insert_tail(&out->vb_group, vb); + fr_value_box_list_insert_tail(&out->vb_group, vb); if (fr_redis_reply_to_value_box(vb, vb, reply->element[i], FR_TYPE_VOID, NULL, box_error, shallow) < 0) goto array_error; diff --git a/src/lib/server/cf_file.c b/src/lib/server/cf_file.c index 909e0542a36..92213efcff0 100644 --- a/src/lib/server/cf_file.c +++ b/src/lib/server/cf_file.c @@ -516,7 +516,7 @@ static int cf_file_open(CONF_SECTION *cs, char const *filename, bool from_dir, F cf_file_t *file; CONF_SECTION *top; fr_rb_tree_t *tree; - int fd; + int fd = -1; FILE *fp; top = cf_root(cs); diff --git a/src/lib/server/exec.c b/src/lib/server/exec.c index 6f82eb9c9da..24e20c3c4ac 100644 --- a/src/lib/server/exec.c +++ b/src/lib/server/exec.c @@ -44,17 +44,16 @@ static _Thread_local fr_sbuff_marker_t env_m[NUM_ELEMENTS(env_arr)]; * - >= 0 number of array elements in argv * - <0 on error */ -static int exec_value_box_list_to_argv(TALLOC_CTX *ctx, char ***argv_p, fr_value_box_list_t const *in) +static int exec_value_box_list_to_argv(TALLOC_CTX *ctx, char ***argv_p, FR_DLIST_HEAD(fr_value_box_list) const *in) { char **argv; - fr_value_box_t *vb = NULL; unsigned int i = 0; - size_t argc = fr_value_box_list_len(in); + size_t argc = fr_value_box_list_num_elements(in); argv = talloc_zero_array(ctx, char *, argc + 1); if (!argv) return -1; - while ((vb = fr_dlist_next(in, vb))) { + fr_value_box_list_foreach(in, vb) { /* * Print the children of each group into the argv array. */ @@ -324,7 +323,7 @@ static NEVER_RETURNS void exec_child(request_t *request, char **argv, char **env * would allow finer-grained control over the attributes to put into * the environment. */ -int fr_exec_fork_nowait(request_t *request, fr_value_box_list_t *args, +int fr_exec_fork_nowait(request_t *request, FR_DLIST_HEAD(fr_value_box_list) *args, fr_pair_list_t *env_pairs, bool env_escape, bool env_inherit) { @@ -337,8 +336,8 @@ int fr_exec_fork_nowait(request_t *request, fr_value_box_list_t *args, /* * Ensure that we don't do anything stupid. */ - first = fr_dlist_head(args); - if (first->type == FR_TYPE_GROUP) first = fr_dlist_head(&first->vb_group); + first = fr_value_box_list_head(args); + if (first->type == FR_TYPE_GROUP) first = fr_value_box_list_head(&first->vb_group); if (first->tainted) { REDEBUG("Program to run comes from tainted source - %pV", first); return -1; @@ -443,7 +442,7 @@ int fr_exec_fork_nowait(request_t *request, fr_value_box_list_t *args, * the environment. */ int fr_exec_fork_wait(pid_t *pid_p, int *stdin_fd, int *stdout_fd, int *stderr_fd, - request_t *request, fr_value_box_list_t *args, + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *args, fr_pair_list_t *env_pairs, bool env_escape, bool env_inherit) { int argc; @@ -458,8 +457,8 @@ int fr_exec_fork_wait(pid_t *pid_p, int *stdin_fd, int *stdout_fd, int *stderr_f /* * Ensure that we don't do anything stupid. */ - first = fr_dlist_head(args); - if (first->type == FR_TYPE_GROUP) first = fr_dlist_head(&first->vb_group); + first = fr_value_box_list_head(args); + if (first->type == FR_TYPE_GROUP) first = fr_value_box_list_head(&first->vb_group); if (first->tainted) { fr_strerror_printf("Program to run comes from tainted source - %pV", first); return -1; @@ -899,7 +898,7 @@ static void exec_stdout_read(UNUSED fr_event_list_t *el, int fd, int flags, void * - -1 on failure */ int fr_exec_start(TALLOC_CTX *ctx, fr_exec_state_t *exec, request_t *request, - fr_value_box_list_t *args, + FR_DLIST_HEAD(fr_value_box_list) *args, fr_pair_list_t *env_pairs, bool env_escape, bool env_inherit, bool need_stdin, bool store_stdout, TALLOC_CTX *stdout_ctx, diff --git a/src/lib/server/exec.h b/src/lib/server/exec.h index 7d0af0f6242..40871f930bd 100644 --- a/src/lib/server/exec.h +++ b/src/lib/server/exec.h @@ -79,15 +79,15 @@ typedef struct { void fr_exec_cleanup(fr_exec_state_t *exec, int signal); -int fr_exec_fork_nowait(request_t *request, fr_value_box_list_t *args, +int fr_exec_fork_nowait(request_t *request, FR_DLIST_HEAD(fr_value_box_list) *args, fr_pair_list_t *env_pairs, bool env_escape, bool env_inherit); int fr_exec_fork_wait(pid_t *pid_p, int *stdin_fd, int *stdout_fd, int *stderr_fd, - request_t *request, fr_value_box_list_t *args, + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *args, fr_pair_list_t *env_pairs, bool env_escape, bool env_inherit); int fr_exec_start(TALLOC_CTX *ctx, fr_exec_state_t *exec, request_t *request, - fr_value_box_list_t *args, + FR_DLIST_HEAD(fr_value_box_list) *args, fr_pair_list_t *env_pairs, bool env_escape, bool env_inherit, bool need_stdin, bool store_stdout, TALLOC_CTX *stdout_ctx, diff --git a/src/lib/server/main_config.c b/src/lib/server/main_config.c index 02fb01b565b..45757b52422 100644 --- a/src/lib/server/main_config.c +++ b/src/lib/server/main_config.c @@ -538,12 +538,12 @@ static xlat_arg_parser_t const xlat_config_args[] = { */ static xlat_action_t xlat_config(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { char const *value; CONF_PAIR *cp; CONF_ITEM *ci; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); fr_value_box_t *vb; ci = cf_reference_item(main_config->root_cs, main_config->root_cs, in_head->vb_strvalue); diff --git a/src/lib/server/map.h b/src/lib/server/map.h index ef6ab84f9f3..46e731e73cb 100644 --- a/src/lib/server/map.h +++ b/src/lib/server/map.h @@ -152,7 +152,7 @@ int map_list_mod_apply(request_t *request, vp_list_mod_t const *vlm); int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, request_t *request, map_t const *map, - fr_value_box_list_t *lhs_result, fr_value_box_list_t *rhs_result); + FR_DLIST_HEAD(fr_value_box_list) *lhs_result, FR_DLIST_HEAD(fr_value_box_list) *rhs_result); int map_to_request(request_t *request, map_t const *map, radius_map_getvalue_t func, void *ctx); diff --git a/src/lib/server/map_async.c b/src/lib/server/map_async.c index 36ef7dffbbc..c5b8f7471c5 100644 --- a/src/lib/server/map_async.c +++ b/src/lib/server/map_async.c @@ -256,14 +256,14 @@ static inline fr_pair_list_t *map_check_src_or_dst(request_t *request, map_t con */ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, request_t *request, map_t const *original, - fr_value_box_list_t *lhs_result, fr_value_box_list_t *rhs_result) + FR_DLIST_HEAD(fr_value_box_list) *lhs_result, FR_DLIST_HEAD(fr_value_box_list) *rhs_result) { vp_list_mod_t *n = NULL; map_t map_tmp; map_t const *mutated = original; fr_dcursor_t values; - fr_value_box_list_t head; + FR_DLIST_HEAD(fr_value_box_list) head; TALLOC_CTX *tmp_ctx = NULL; MAP_VERIFY(original); @@ -299,7 +299,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, case TMPL_TYPE_XLAT: { ssize_t slen; - fr_value_box_t *lhs_result_head = fr_dlist_head(lhs_result); + fr_value_box_t *lhs_result_head = fr_value_box_list_head(lhs_result); /* * Get our own mutable copy of the original so we can @@ -310,7 +310,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, tmp_ctx = talloc_new(NULL); - fr_assert(!fr_dlist_empty(lhs_result)); + fr_assert(!fr_value_box_list_empty(lhs_result)); /* * This should always be a noop, but included @@ -321,7 +321,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, FR_VALUE_BOX_LIST_FREE, true, SIZE_MAX) < 0) { RPEDEBUG("Left side expansion failed"); - fr_dlist_talloc_free(lhs_result); + fr_value_box_list_talloc_free(lhs_result); goto error; } @@ -335,7 +335,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, if (slen <= 0) { RPEDEBUG("Left side expansion result \"%s\" is not an attribute reference", lhs_result_head->vb_strvalue); - fr_dlist_talloc_free(lhs_result); + fr_value_box_list_talloc_free(lhs_result); goto error; } fr_assert(tmpl_is_attr(mutated->lhs) || tmpl_is_list(mutated->lhs)); @@ -452,7 +452,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, n = list_mod_generic_afrom_map(ctx, original, mutated); if (!n) goto error; - fr_dcursor_init(&values, &head); + fr_dcursor_init(&values, fr_value_box_list_dlist_head(&head)); if (fr_value_box_from_str(map_list_head(&n->mod), tmpl_value(map_list_head(&n->mod)->rhs), type, @@ -470,7 +470,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, */ if (!map_check_src_or_dst(request, mutated, mutated->lhs)) goto error; - (void)fr_dcursor_init(&values, &head); + (void)fr_dcursor_init(&values, fr_value_box_list_dlist_head(&head)); switch (mutated->rhs->type) { case TMPL_TYPE_XLAT: @@ -490,7 +490,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, * happens. This is only for XLATs and in future * EXECs. */ - if (fr_dlist_empty(rhs_result)) { + if (fr_value_box_list_empty(rhs_result)) { n = list_mod_empty_string_afrom_map(ctx, original, mutated); if (!n) { RPEDEBUG("Assigning value to \"%s\" failed", tmpl_da(mutated->lhs)->name); @@ -508,7 +508,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, n = list_mod_generic_afrom_map(ctx, original, mutated); if (!n) goto error; - (void)fr_dcursor_init(&from, rhs_result); + (void)fr_dcursor_init(&from, fr_value_box_list_dlist_head(rhs_result)); while ((vb = fr_dcursor_remove(&from))) { if (vb->type != tmpl_da(mutated->lhs)->type) { n_vb = fr_value_box_alloc_null(map_list_head(&n->mod)->rhs); @@ -544,7 +544,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, fr_value_box_t *n_vb; int err; - fr_assert(fr_dlist_empty(rhs_result)); + fr_assert(fr_value_box_list_empty(rhs_result)); fr_assert((tmpl_is_attr(mutated->lhs) && tmpl_da(mutated->lhs)) || (tmpl_is_list(mutated->lhs) && !tmpl_da(mutated->lhs))); @@ -620,7 +620,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, { fr_value_box_t *vb, *n_vb; - fr_assert(fr_dlist_empty(rhs_result)); + fr_assert(fr_value_box_list_empty(rhs_result)); fr_assert(tmpl_da(mutated->lhs)); fr_assert(tmpl_is_attr(mutated->lhs)); @@ -674,7 +674,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, fr_dcursor_t from; fr_pair_list_t vp_head; fr_pair_t *vp; - fr_value_box_t *rhs_result_head = fr_dlist_head(rhs_result); + fr_value_box_t *rhs_result_head = fr_value_box_list_head(rhs_result); fr_pair_list_init(&vp_head); /* @@ -691,7 +691,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, * happens. This is only for XLATs and in future * EXECs. */ - if (fr_dlist_empty(rhs_result)) { + if (fr_value_box_list_empty(rhs_result)) { RPEDEBUG("Cannot assign empty value to \"%s\"", mutated->lhs->name); goto error; } @@ -705,7 +705,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, FR_VALUE_BOX_LIST_FREE, true, SIZE_MAX) < 0) { RPEDEBUG("Right side expansion failed"); - fr_dlist_talloc_free(rhs_result); + fr_value_box_list_talloc_free(rhs_result); goto error; } @@ -768,7 +768,7 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, goto error; } - fr_assert(!fr_dlist_empty(&head) || !n); + fr_assert(!fr_value_box_list_empty(&head) || !n); /* * FIXME: This is only required because @@ -777,13 +777,13 @@ int map_to_list_mod(TALLOC_CTX *ctx, vp_list_mod_t **out, * If tmpl_value were a pointer we could * assign values directly. */ - fr_value_box_copy(map_list_head(&n->mod)->rhs, tmpl_value(map_list_head(&n->mod)->rhs), fr_dlist_head(&head)); + fr_value_box_copy(map_list_head(&n->mod)->rhs, tmpl_value(map_list_head(&n->mod)->rhs), fr_value_box_list_head(&head)); /* * value boxes in tmpls cannot now be the head of a list * *tmpl_value(map_list_head(&n->mod)->rhs)->next = head->next; */ - fr_dlist_talloc_free(&head); + fr_value_box_list_talloc_free(&head); finish: if (n) { diff --git a/src/lib/server/map_proc.c b/src/lib/server/map_proc.c index fed7e7f91db..2a73859624a 100644 --- a/src/lib/server/map_proc.c +++ b/src/lib/server/map_proc.c @@ -197,7 +197,7 @@ map_proc_inst_t *map_proc_instantiate(TALLOC_CTX *ctx, map_proc_t const *proc, * @param[in,out] result Result of expanding the map input. May be consumed * by the map processor. */ -rlm_rcode_t map_proc(request_t *request, map_proc_inst_t const *inst, fr_value_box_list_t *result) +rlm_rcode_t map_proc(request_t *request, map_proc_inst_t const *inst, FR_DLIST_HEAD(fr_value_box_list) *result) { return inst->proc->evaluate(inst->proc->mod_inst, inst->data, request, result, inst->maps); } diff --git a/src/lib/server/map_proc.h b/src/lib/server/map_proc.h index bce2804745e..dc7160fcc46 100644 --- a/src/lib/server/map_proc.h +++ b/src/lib/server/map_proc.h @@ -59,7 +59,7 @@ extern "C" { * - #RLM_MODULE_FAIL - If an error occurred performing the mapping. */ typedef rlm_rcode_t (*map_proc_func_t)(void *mod_inst, void *proc_inst, request_t *request, - fr_value_box_list_t *result, map_list_t const *maps); + FR_DLIST_HEAD(fr_value_box_list) *result, map_list_t const *maps); /** Allocate new instance data for a map processor * @@ -85,7 +85,7 @@ int map_proc_register(void *mod_inst, char const *name, map_proc_inst_t *map_proc_instantiate(TALLOC_CTX *ctx, map_proc_t const *proc, CONF_SECTION *cs, tmpl_t const *src, map_list_t const *maps); -rlm_rcode_t map_proc(request_t *request, map_proc_inst_t const *inst, fr_value_box_list_t *src); +rlm_rcode_t map_proc(request_t *request, map_proc_inst_t const *inst, FR_DLIST_HEAD(fr_value_box_list) *src); #ifdef __cplusplus } diff --git a/src/lib/server/tmpl.h b/src/lib/server/tmpl.h index 0ea84e2b6ab..6f02e327a50 100644 --- a/src/lib/server/tmpl.h +++ b/src/lib/server/tmpl.h @@ -1173,11 +1173,11 @@ int tmpl_extents_build_to_leaf_parent(fr_dlist_head_t *leaf, fr_dlist_head_t * void tmpl_extents_debug(fr_dlist_head_t *head) CC_HINT(nonnull); -int tmpl_eval_pair(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request, tmpl_t const *vpt); +int tmpl_eval_pair(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, tmpl_t const *vpt); -int tmpl_eval(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request, tmpl_t const *vpt); +int tmpl_eval(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, tmpl_t const *vpt); -int tmpl_eval_cast(TALLOC_CTX *ctx, fr_value_box_list_t *out, tmpl_t const *vpt); +int tmpl_eval_cast(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, tmpl_t const *vpt); /** @} */ ssize_t tmpl_preparse(char const **out, size_t *outlen, char const *in, size_t inlen, @@ -1189,7 +1189,7 @@ bool tmpl_async_required(tmpl_t const *vpt) CC_HINT(nonnull); fr_pair_t *tmpl_get_list(request_t *request, tmpl_t const *vpt) CC_HINT(nonnull(2)); /* temporary hack */ -int tmpl_value_list_insert_tail(fr_value_box_list_t *list, fr_value_box_t *vb, tmpl_t const *vpt) CC_HINT(nonnull); +int tmpl_value_list_insert_tail(FR_DLIST_HEAD(fr_value_box_list) *list, fr_value_box_t *vb, tmpl_t const *vpt) CC_HINT(nonnull); void tmpl_rules_child_init(TALLOC_CTX *ctx, tmpl_rules_t *out, tmpl_rules_t const *parent, tmpl_t *vpt) CC_HINT(nonnull); diff --git a/src/lib/server/tmpl_eval.c b/src/lib/server/tmpl_eval.c index bb6b7930479..2191cfab2c9 100644 --- a/src/lib/server/tmpl_eval.c +++ b/src/lib/server/tmpl_eval.c @@ -1134,17 +1134,17 @@ int pair_append_by_tmpl_parent(TALLOC_CTX *ctx, fr_pair_t **out, fr_pair_list_t * - <0 for "cast failed" * - 0 for success */ -int tmpl_value_list_insert_tail(fr_value_box_list_t *list, fr_value_box_t *box, tmpl_t const *vpt) +int tmpl_value_list_insert_tail(FR_DLIST_HEAD(fr_value_box_list) *list, fr_value_box_t *box, tmpl_t const *vpt) { if (fr_type_is_null(tmpl_rules_cast(vpt)) || (box->type == tmpl_rules_cast(vpt))) { - fr_dlist_insert_tail(list, box); + fr_value_box_list_insert_tail(list, box); return 0; } if (fr_value_box_cast_in_place(box, box, tmpl_rules_cast(vpt), tmpl_rules_enumv(vpt)) < 0) return -1; - fr_dlist_insert_tail(list, box); + fr_value_box_list_insert_tail(list, box); return 0; } @@ -1162,12 +1162,12 @@ int tmpl_value_list_insert_tail(fr_value_box_list_t *list, fr_value_box_t *box, * - <0 on memory allocation errors. * - 0 success. */ -static int tmpl_eval_pair_virtual(TALLOC_CTX *ctx, fr_value_box_list_t *out, +static int tmpl_eval_pair_virtual(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, tmpl_t const *vpt) { fr_radius_packet_t *packet = NULL; fr_value_box_t *value; - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; /* * Virtual attributes always have a count of 1 @@ -1299,14 +1299,14 @@ static int tmpl_eval_pair_virtual(TALLOC_CTX *ctx, fr_value_box_list_t *out, done: fr_value_box_list_init(&list); - fr_dlist_insert_tail(&list, value); + fr_value_box_list_insert_tail(&list, value); if (tmpl_eval_cast(ctx, &list, vpt) < 0) { - fr_dlist_talloc_free(&list); + fr_value_box_list_talloc_free(&list); return -1; }; - fr_dlist_move(out, &list); + fr_value_box_list_move(out, &list); return 0; } @@ -1321,7 +1321,7 @@ done: * - <0 we failed getting a value for the attribute. * - 0 we successfully evaluated the tmpl */ -int tmpl_eval_pair(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request, tmpl_t const *vpt) +int tmpl_eval_pair(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, tmpl_t const *vpt) { fr_pair_t *vp = NULL; fr_value_box_t *value; @@ -1330,7 +1330,7 @@ int tmpl_eval_pair(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request tmpl_dcursor_ctx_t cc; int ret = 0; - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; fr_assert(tmpl_is_attr(vpt) || tmpl_is_list(vpt)); @@ -1368,7 +1368,7 @@ int tmpl_eval_pair(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request goto fail; } value->datum.int32 = 0; - fr_dlist_insert_tail(&list, value); + fr_value_box_list_insert_tail(&list, value); } /* Fall through to being done */ goto done; @@ -1390,7 +1390,7 @@ int tmpl_eval_pair(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request value = fr_value_box_alloc(ctx, FR_TYPE_UINT32, NULL, false); if (!value) goto oom; value->datum.uint32 = count; - fr_dlist_insert_tail(&list, value); + fr_value_box_list_insert_tail(&list, value); break; } @@ -1418,7 +1418,7 @@ int tmpl_eval_pair(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request fr_value_box_copy(value, value, &vp->data); } - fr_dlist_insert_tail(&list, value); + fr_value_box_list_insert_tail(&list, value); vp = fr_dcursor_next(&cursor); } break; @@ -1429,7 +1429,7 @@ int tmpl_eval_pair(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request fr_assert(fr_type_is_leaf(vp->da->type)); fr_value_box_copy(value, value, &vp->data); /* Also dups taint */ - fr_dlist_insert_tail(&list, value); + fr_value_box_list_insert_tail(&list, value); break; } @@ -1439,12 +1439,12 @@ done: */ if (ret == 0) { if (tmpl_eval_cast(ctx, &list, vpt) < 0) { - fr_dlist_talloc_free(&list); + fr_value_box_list_talloc_free(&list); ret = -1; goto fail; } - fr_dlist_move(out, &list); + fr_value_box_list_move(out, &list); } fail: @@ -1465,11 +1465,11 @@ fail: * - <0 we failed getting a value for the tmpl * - 0 we successfully evaluated the tmpl */ -int tmpl_eval(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request, tmpl_t const *vpt) +int tmpl_eval(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, tmpl_t const *vpt) { char *p; fr_value_box_t *value; - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; if (tmpl_needs_resolving(vpt)) { fr_strerror_const("Cannot evaluate unresolved tmpl"); @@ -1524,14 +1524,14 @@ int tmpl_eval(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request, tmp */ done: fr_value_box_list_init(&list); - fr_dlist_insert_tail(&list, value); + fr_value_box_list_insert_tail(&list, value); if (tmpl_eval_cast(ctx, &list, vpt) < 0) { - fr_dlist_talloc_free(&list); + fr_value_box_list_talloc_free(&list); return -1; }; - fr_dlist_move(out, &list); + fr_value_box_list_move(out, &list); return 0; } @@ -1546,7 +1546,7 @@ done: * - <0 the cast failed * - 0 we successfully evaluated the tmpl */ -int tmpl_eval_cast(TALLOC_CTX *ctx, fr_value_box_list_t *list, tmpl_t const *vpt) +int tmpl_eval_cast(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *list, tmpl_t const *vpt) { fr_type_t cast = tmpl_rules_cast(vpt); fr_value_box_t *vb; @@ -1559,7 +1559,7 @@ int tmpl_eval_cast(TALLOC_CTX *ctx, fr_value_box_list_t *list, tmpl_t const *vpt /* * Apply a cast to the results if required. */ - vb = fr_dlist_head(list); + vb = fr_value_box_list_head(list); if (!vb) return 0; switch (cast) { @@ -1570,7 +1570,7 @@ int tmpl_eval_cast(TALLOC_CTX *ctx, fr_value_box_list_t *list, tmpl_t const *vpt * Many boxes, turn them into strings, and try to parse it as the * output type. */ - if (!fr_dlist_next(list, vb)) { + if (!fr_value_box_list_next(list, vb)) { return fr_value_box_cast_in_place(vb, vb, cast, NULL); } FALL_THROUGH; @@ -1592,7 +1592,7 @@ int tmpl_eval_cast(TALLOC_CTX *ctx, fr_value_box_list_t *list, tmpl_t const *vpt NULL, tainted); if ((vlen < 0) || (slen != vlen)) return -1; - fr_dlist_insert_tail(list, vb); + fr_value_box_list_insert_tail(list, vb); break; case FR_TYPE_OCTETS: diff --git a/src/lib/server/trigger.c b/src/lib/server/trigger.c index 82d1d027155..d919c0471d5 100644 --- a/src/lib/server/trigger.c +++ b/src/lib/server/trigger.c @@ -63,12 +63,12 @@ xlat_arg_parser_t const trigger_xlat_args[] = { */ xlat_action_t trigger_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_list_t *head = NULL; fr_dict_attr_t const *da; fr_pair_t *vp; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); fr_value_box_t *vb; if (!triggers_init) { @@ -186,7 +186,7 @@ bool trigger_enabled(void) typedef struct { char *command; //!< Name of the trigger. xlat_exp_head_t *xlat; //!< xlat representation of the trigger args. - fr_value_box_list_t args; //!< Arguments to pass to the trigger exec. + FR_DLIST_HEAD(fr_value_box_list) args; //!< Arguments to pass to the trigger exec. fr_exec_state_t exec; //!< Used for asynchronous execution. fr_time_delta_t timeout; //!< How long the trigger has to run. @@ -212,7 +212,7 @@ static unlang_action_t trigger_resume(rlm_rcode_t *p_result, UNUSED int *priorit { fr_trigger_t *trigger = talloc_get_type_abort(rctx, fr_trigger_t); - if (fr_dlist_empty(&trigger->args)) { + if (fr_value_box_list_empty(&trigger->args)) { RERROR("Failed trigger \"%s\" - did not expand to anything", trigger->command); RETURN_MODULE_FAIL; } diff --git a/src/lib/server/trigger.h b/src/lib/server/trigger.h index d8b65a15ae0..8798db29949 100644 --- a/src/lib/server/trigger.h +++ b/src/lib/server/trigger.h @@ -40,7 +40,7 @@ extern xlat_arg_parser_t const trigger_xlat_args[]; xlat_action_t trigger_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in); + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in); int trigger_exec_init(CONF_SECTION const *cs); diff --git a/src/lib/server/trunk.c b/src/lib/server/trunk.c index f1752cfccac..1b9b3fffa0c 100644 --- a/src/lib/server/trunk.c +++ b/src/lib/server/trunk.c @@ -4814,7 +4814,7 @@ void fr_trunk_verify(char const *file, int line, fr_trunk_t *trunk) (void) talloc_get_type_abort(trunk, fr_trunk_t); for (size_t i = 0; i < NUM_ELEMENTS(trunk->watch); i++) { - fr_dlist_verify(file, line, &trunk->watch[i]); + _fr_dlist_verify(file, line, &trunk->watch[i]); } #define IO_FUNC_VERIFY(_func) \ @@ -4837,7 +4837,7 @@ do { \ #define TCONN_DLIST_VERIFY(_dlist, _state) \ do { \ - fr_dlist_verify(file, line, &(trunk->_dlist)); \ + _fr_dlist_verify(file, line, &(trunk->_dlist)); \ fr_dlist_foreach(&(trunk->_dlist), fr_trunk_connection_t, tconn) { \ fr_trunk_connection_verify(file, line, tconn); \ TRUNK_TCONN_CHECKS(tconn, _state); \ @@ -4853,7 +4853,7 @@ do {\ }} \ } while (0) - FR_DLIST_VERIFY(&(trunk->free_requests)); + fr_dlist_verify(&(trunk->free_requests)); FR_HEAP_VERIFY(trunk->backlog); TCONN_DLIST_VERIFY(init, FR_TRUNK_CONN_INIT); @@ -4893,7 +4893,7 @@ do { \ #define TREQ_DLIST_VERIFY(_dlist, _state) \ do { \ - fr_dlist_verify(file, line, &(tconn->_dlist)); \ + _fr_dlist_verify(file, line, &(tconn->_dlist)); \ fr_dlist_foreach(&(tconn->_dlist), fr_trunk_request_t, treq) { \ fr_trunk_request_verify(file, line, treq); \ TCONN_TREQ_CHECKS(treq, _state); \ diff --git a/src/lib/unlang/compile.c b/src/lib/unlang/compile.c index 998611f7874..aaba8c3eff4 100644 --- a/src/lib/unlang/compile.c +++ b/src/lib/unlang/compile.c @@ -24,10 +24,11 @@ */ RCSID("$Id$") +#include #include #include #include -#include +#include #include "call_priv.h" #include "caller_priv.h" @@ -2747,7 +2748,7 @@ static unlang_t *compile_timeout(unlang_t *parent, unlang_compile_t *unlang_ctx, unlang_t *c; unlang_group_t *g; unlang_timeout_t *gext; - fr_time_delta_t timeout; + fr_time_delta_t timeout = fr_time_delta_from_sec(0); tmpl_t *vpt = NULL; fr_token_t token; @@ -2860,9 +2861,9 @@ static unlang_t *compile_limit(unlang_t *parent, unlang_compile_t *unlang_ctx, C char const *name2; unlang_t *c; unlang_group_t *g; - unlang_limit_t *gext; + unlang_limit_t *gext; tmpl_t *vpt = NULL; - uint32_t limit; + uint32_t limit = 0; fr_token_t token; ssize_t slen; tmpl_rules_t t_rules; diff --git a/src/lib/unlang/condition.c b/src/lib/unlang/condition.c index 537dcab1e5b..b792c18c28c 100644 --- a/src/lib/unlang/condition.c +++ b/src/lib/unlang/condition.c @@ -28,7 +28,7 @@ RCSID("$Id$") #include "group_priv.h" typedef struct { - fr_value_box_list_t out; //!< Head of the result of a nested + FR_DLIST_HEAD(fr_value_box_list) out; //!< Head of the result of a nested ///< expansion. bool success; //!< If set, where to record the result ///< of the execution. @@ -37,13 +37,13 @@ typedef struct { static unlang_action_t unlang_if_resume(rlm_rcode_t *p_result, request_t *request, unlang_stack_frame_t *frame) { unlang_frame_state_cond_t *state = talloc_get_type_abort(frame->state, unlang_frame_state_cond_t); - fr_value_box_t *box = fr_dlist_head(&state->out); + fr_value_box_t *box = fr_value_box_list_head(&state->out); bool value; if (!box) { value = false; - } else if (fr_dlist_next(&state->out, box) != NULL) { + } else if (fr_value_box_list_next(&state->out, box) != NULL) { value = true; } else { diff --git a/src/lib/unlang/edit.c b/src/lib/unlang/edit.c index ea2fcacd522..239bb8cc720 100644 --- a/src/lib/unlang/edit.c +++ b/src/lib/unlang/edit.c @@ -35,7 +35,7 @@ RCSID("$Id$") #include "edit_priv.h" typedef struct { - fr_value_box_list_t result; //!< result of expansion + FR_DLIST_HEAD(fr_value_box_list) result; //!< result of expansion tmpl_t const *vpt; //!< expanded tmpl tmpl_t *to_free; //!< tmpl to free. bool create; //!< whether we need to create the VP @@ -90,7 +90,7 @@ static fr_pair_t *edit_list_pair_build(fr_pair_t *parent, fr_dcursor_t *cursor, static int tmpl_attr_from_result(TALLOC_CTX *ctx, edit_result_t *out, request_t *request) { ssize_t slen; - fr_value_box_t *box = fr_dlist_head(&out->result); + fr_value_box_t *box = fr_value_box_list_head(&out->result); if (!box) { RWDEBUG("No value found for assignment"); @@ -122,7 +122,7 @@ static int tmpl_attr_from_result(TALLOC_CTX *ctx, edit_result_t *out, request_t } out->vpt = out->to_free; - fr_dlist_talloc_free(&out->result); + fr_value_box_list_talloc_free(&out->result); return 0; } @@ -205,7 +205,7 @@ static int apply_edits_to_list(request_t *request, unlang_frame_state_edit_t *st } } else { - box = fr_dlist_head(¤t->rhs.result); + box = fr_value_box_list_head(¤t->rhs.result); /* * Can't concatenate empty results. @@ -449,7 +449,7 @@ static int apply_edits_to_leaf(request_t *request, unlang_frame_state_edit_t *st * tmpl_push(). If the input xlat/tmpl is quoted, then the output should be a * single value-box which is the final string. */ - box = fr_dlist_head(¤t->rhs.result); + box = fr_value_box_list_head(¤t->rhs.result); if (!box) goto no_rhs; @@ -458,16 +458,16 @@ static int apply_edits_to_leaf(request_t *request, unlang_frame_state_edit_t *st RWDEBUG("Failed converting result to string"); return -1; } - box = fr_dlist_head(¤t->rhs.result); + box = fr_value_box_list_head(¤t->rhs.result); single = true; } else { rhs_list: - if (fr_dlist_num_elements(¤t->rhs.result) == 1) { - box = fr_dlist_head(¤t->rhs.result); + if (fr_value_box_list_num_elements(¤t->rhs.result) == 1) { + box = fr_value_box_list_head(¤t->rhs.result); single = true; } else { - box = fr_dcursor_init(&cursor, ¤t->rhs.result); + box = fr_dcursor_init(&cursor, fr_value_box_list_dlist_head(¤t->rhs.result)); } } } else { @@ -621,7 +621,7 @@ static int apply_edits_to_leaf(request_t *request, unlang_frame_state_edit_t *st done: if (pair) tmpl_dcursor_clear(&cc); - fr_dlist_talloc_free(¤t->rhs.result); + fr_value_box_list_talloc_free(¤t->rhs.result); return 0; } @@ -966,7 +966,7 @@ static int check_lhs_value(request_t *request, unlang_frame_state_edit_t *state, MEM(box = fr_value_box_alloc_null(state)); if (fr_value_box_copy(state, box, tmpl_value(vpt)) < 0) return -1; - fr_dlist_insert_tail(¤t->parent->rhs.result, box); + fr_value_box_list_insert_tail(¤t->parent->rhs.result, box); return next_map(request, state, current); } @@ -990,7 +990,7 @@ static int check_lhs_value(request_t *request, unlang_frame_state_edit_t *state, MEM(box = fr_value_box_alloc_null(state)); if (fr_value_box_copy(state, box, &vp->data) < 0) return -1; - fr_dlist_insert_tail(¤t->parent->rhs.result, box); + fr_value_box_list_insert_tail(¤t->parent->rhs.result, box); vp = fr_dcursor_next(&cursor); } @@ -1016,7 +1016,7 @@ static int expanded_lhs_value(request_t *request, unlang_frame_state_edit_t *sta { fr_assert(current->parent); - fr_dlist_move(¤t->parent->rhs.result, ¤t->lhs.result); + fr_value_box_list_move(¤t->parent->rhs.result, ¤t->lhs.result); return next_map(request, state, current); } @@ -1198,8 +1198,8 @@ static int expand_lhs(request_t *request, unlang_frame_state_edit_t *state, edit int rcode; map_t const *map = current->map; - fr_assert(fr_dlist_empty(¤t->lhs.result)); /* Should have been consumed */ - fr_assert(fr_dlist_empty(¤t->rhs.result)); /* Should have been consumed */ + fr_assert(fr_value_box_list_empty(¤t->lhs.result)); /* Should have been consumed */ + fr_assert(fr_value_box_list_empty(¤t->rhs.result)); /* Should have been consumed */ rcode = tmpl_to_values(state, ¤t->lhs, request, map->lhs); if (rcode < 0) return -1; diff --git a/src/lib/unlang/foreach.c b/src/lib/unlang/foreach.c index e4efc60e728..1a4225ac6c3 100644 --- a/src/lib/unlang/foreach.c +++ b/src/lib/unlang/foreach.c @@ -60,7 +60,7 @@ typedef struct { static xlat_action_t unlang_foreach_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in); + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in); #define FOREACH_REQUEST_DATA (void *)unlang_foreach_xlat @@ -206,7 +206,7 @@ static unlang_action_t unlang_break(rlm_rcode_t *p_result, request_t *request, u */ static xlat_action_t unlang_foreach_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_t *vp; int const *inst = xctx->inst; diff --git a/src/lib/unlang/interpret.c b/src/lib/unlang/interpret.c index 4af5ea3208d..bc79ee50ad5 100644 --- a/src/lib/unlang/interpret.c +++ b/src/lib/unlang/interpret.c @@ -1285,13 +1285,13 @@ static xlat_arg_parser_t const unlang_interpret_xlat_args[] = { */ static xlat_action_t unlang_interpret_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { unlang_stack_t *stack = request->stack; int depth = stack->depth; unlang_stack_frame_t *frame; unlang_t const *instruction; - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); char const *fmt = arg->vb_strvalue; fr_value_box_t *vb; diff --git a/src/lib/unlang/interpret_synchronous.c b/src/lib/unlang/interpret_synchronous.c index eecc80bc465..baf7e22305d 100644 --- a/src/lib/unlang/interpret_synchronous.c +++ b/src/lib/unlang/interpret_synchronous.c @@ -123,7 +123,7 @@ static void _request_runnable(request_t *request, void *uctx) /** Interpreter yielded request * */ -static void _request_yield(request_t *request, UNUSED void *uctx) +static void _request_yield(request_t *request, void *uctx) { unlang_interpret_synchronous_t *intps = uctx; diff --git a/src/lib/unlang/limit.c b/src/lib/unlang/limit.c index 90d78d8af5e..b2da33151af 100644 --- a/src/lib/unlang/limit.c +++ b/src/lib/unlang/limit.c @@ -28,15 +28,15 @@ RCSID("$Id$") #include "limit_priv.h" typedef struct { - uint32_t active_callers; + uint32_t active_callers; } unlang_thread_limit_t; typedef struct { - unlang_thread_limit_t *thread; - uint32_t limit; - request_t *request; + unlang_thread_limit_t *thread; + uint32_t limit; + request_t *request; - fr_value_box_list_t result; + FR_DLIST_HEAD(fr_value_box_list) result; } unlang_frame_state_limit_t; /** Send a signal (usually stop) to a request @@ -87,10 +87,10 @@ static unlang_action_t unlang_limit_enforce(rlm_rcode_t *p_result, request_t *re return UNLANG_ACTION_PUSHED_CHILD; } -static unlang_action_t unlang_limit_xlat_done(UNUSED rlm_rcode_t *p_result, UNUSED request_t *request, unlang_stack_frame_t *frame) +static unlang_action_t unlang_limit_xlat_done(rlm_rcode_t *p_result, request_t *request, unlang_stack_frame_t *frame) { unlang_frame_state_limit_t *state = talloc_get_type_abort(frame->state, unlang_frame_state_limit_t); - fr_value_box_t *box = fr_dlist_head(&state->result); + fr_value_box_t *box = fr_value_box_list_head(&state->result); /* * compile_limit() ensures that the tmpl is cast to uint32, so we don't have to do any more work here. diff --git a/src/lib/unlang/map.c b/src/lib/unlang/map.c index 9e80bbcaf24..f771c084a15 100644 --- a/src/lib/unlang/map.c +++ b/src/lib/unlang/map.c @@ -48,8 +48,8 @@ typedef struct { fr_dlist_head_t vlm_head; //!< Head of list of VP List Mod. - fr_value_box_list_t lhs_result; //!< Result of expanding the LHS - fr_value_box_list_t rhs_result; //!< Result of expanding the RHS. + FR_DLIST_HEAD(fr_value_box_list) lhs_result; //!< Result of expanding the LHS + FR_DLIST_HEAD(fr_value_box_list) rhs_result; //!< Result of expanding the RHS. unlang_update_state_t state; //!< What we're currently doing. } unlang_frame_state_update_t; @@ -58,7 +58,7 @@ typedef struct { * */ typedef struct { - fr_value_box_list_t src_result; //!< Result of expanding the map source. + FR_DLIST_HEAD(fr_value_box_list) src_result; //!< Result of expanding the map source. } unlang_frame_state_map_proc_t; /** Apply a list of modifications on one or more fr_pair_t lists. @@ -133,8 +133,8 @@ static unlang_action_t list_mod_create(rlm_rcode_t *p_result, request_t *request case UNLANG_UPDATE_MAP_INIT: update_state->state = UNLANG_UPDATE_MAP_EXPANDED_LHS; - fr_assert(fr_dlist_empty(&update_state->lhs_result)); /* Should have been consumed */ - fr_assert(fr_dlist_empty(&update_state->rhs_result)); /* Should have been consumed */ + fr_assert(fr_value_box_list_empty(&update_state->lhs_result)); /* Should have been consumed */ + fr_assert(fr_value_box_list_empty(&update_state->rhs_result)); /* Should have been consumed */ switch (map->lhs->type) { default: @@ -216,9 +216,9 @@ static unlang_action_t list_mod_create(rlm_rcode_t *p_result, request_t *request /* * Concat the top level results together */ - if (!fr_dlist_empty(&update_state->rhs_result) && + if (!fr_value_box_list_empty(&update_state->rhs_result) && (fr_value_box_list_concat_in_place(update_state, - fr_dlist_head(&update_state->rhs_result), &update_state->rhs_result, FR_TYPE_STRING, + fr_value_box_list_head(&update_state->rhs_result), &update_state->rhs_result, FR_TYPE_STRING, FR_VALUE_BOX_LIST_FREE, true, SIZE_MAX) < 0)) { RPEDEBUG("Failed concatenating RHS expansion results"); @@ -230,12 +230,12 @@ static unlang_action_t list_mod_create(rlm_rcode_t *p_result, request_t *request &update_state->lhs_result, &update_state->rhs_result) < 0) goto error; if (new_mod) fr_dlist_insert_tail(&update_state->vlm_head, new_mod); - fr_dlist_talloc_free(&update_state->rhs_result); + fr_value_box_list_talloc_free(&update_state->rhs_result); } next: update_state->state = UNLANG_UPDATE_MAP_INIT; - fr_dlist_talloc_free(&update_state->lhs_result); + fr_value_box_list_talloc_free(&update_state->lhs_result); break; } @@ -297,9 +297,9 @@ static unlang_action_t map_proc_apply(rlm_rcode_t *p_result, request_t *request, /* * FIXME - We don't yet support async LHS/RHS expansions for map procs */ - FR_DLIST_VERIFY(&map_proc_state->src_result); + fr_value_box_list_verify(&map_proc_state->src_result); *p_result = map_proc(request, gext->proc_inst, &map_proc_state->src_result); - FR_DLIST_VERIFY(&map_proc_state->src_result); + fr_value_box_list_verify(&map_proc_state->src_result); return UNLANG_ACTION_CALCULATE_RESULT; } @@ -337,7 +337,7 @@ static unlang_action_t unlang_map_state_init(rlm_rcode_t *p_result, request_t *r *p_result = RLM_MODULE_FAIL; return UNLANG_ACTION_CALCULATE_RESULT; } - fr_dlist_insert_head(&map_proc_state->src_result, src_result); + fr_value_box_list_insert_head(&map_proc_state->src_result, src_result); break; } case TMPL_TYPE_EXEC: diff --git a/src/lib/unlang/module.c b/src/lib/unlang/module.c index fb8fc89bf1c..141cf1b140b 100644 --- a/src/lib/unlang/module.c +++ b/src/lib/unlang/module.c @@ -441,7 +441,7 @@ int unlang_module_set_resume(request_t *request, unlang_module_resume_t resume) * @return * - UNLANG_ACTION_YIELD */ -unlang_action_t unlang_module_yield_to_xlat(TALLOC_CTX *ctx, bool *p_success, fr_value_box_list_t *out, +unlang_action_t unlang_module_yield_to_xlat(TALLOC_CTX *ctx, bool *p_success, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, xlat_exp_head_t const *exp, unlang_module_resume_t resume, unlang_module_signal_t signal, void *rctx) @@ -487,7 +487,7 @@ unlang_action_t unlang_module_yield_to_xlat(TALLOC_CTX *ctx, bool *p_success, fr * @return * - UNLANG_ACTION_YIELD */ -unlang_action_t unlang_module_yield_to_tmpl(TALLOC_CTX *ctx, fr_value_box_list_t *out, +unlang_action_t unlang_module_yield_to_tmpl(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, tmpl_t const *vpt, unlang_tmpl_args_t *args, unlang_module_resume_t resume, diff --git a/src/lib/unlang/module.h b/src/lib/unlang/module.h index 6f0d52498b9..caa94c5c80d 100644 --- a/src/lib/unlang/module.h +++ b/src/lib/unlang/module.h @@ -121,12 +121,12 @@ unlang_action_t unlang_module_yield_to_section(rlm_rcode_t *p_result, unlang_module_resume_t resume, unlang_module_signal_t signal, void *rctx); -unlang_action_t unlang_module_yield_to_xlat(TALLOC_CTX *ctx, bool *p_success, fr_value_box_list_t *out, +unlang_action_t unlang_module_yield_to_xlat(TALLOC_CTX *ctx, bool *p_success, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, xlat_exp_head_t const *xlat, unlang_module_resume_t resume, unlang_module_signal_t signal, void *rctx); -unlang_action_t unlang_module_yield_to_tmpl(TALLOC_CTX *ctx, fr_value_box_list_t *out, +unlang_action_t unlang_module_yield_to_tmpl(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, tmpl_t const *vpt, unlang_tmpl_args_t *args, unlang_module_resume_t resume, diff --git a/src/lib/unlang/timeout.c b/src/lib/unlang/timeout.c index f7c8cc95fa3..11922f2054d 100644 --- a/src/lib/unlang/timeout.c +++ b/src/lib/unlang/timeout.c @@ -28,14 +28,14 @@ RCSID("$Id$") #include "timeout_priv.h" typedef struct { - bool success; - int depth; - fr_time_delta_t timeout; - request_t *request; - rindent_t indent; - fr_event_timer_t const *ev; - - fr_value_box_list_t result; + bool success; + int depth; + fr_time_delta_t timeout; + request_t *request; + rindent_t indent; + fr_event_timer_t const *ev; + + FR_DLIST_HEAD(fr_value_box_list) result; } unlang_frame_state_timeout_t; static void unlang_timeout_handler(UNUSED fr_event_list_t *el, UNUSED fr_time_t now, void *ctx) @@ -57,7 +57,7 @@ static void unlang_timeout_handler(UNUSED fr_event_list_t *el, UNUSED fr_time_t state->success = false; } -static unlang_action_t unlang_timeout_resume_done(UNUSED rlm_rcode_t *p_result, UNUSED request_t *request, unlang_stack_frame_t *frame) +static unlang_action_t unlang_timeout_resume_done(UNUSED rlm_rcode_t *p_result, request_t *request, unlang_stack_frame_t *frame) { unlang_frame_state_timeout_t *state = talloc_get_type_abort(frame->state, unlang_frame_state_timeout_t); @@ -104,10 +104,10 @@ static unlang_action_t unlang_timeout_set(rlm_rcode_t *p_result, request_t *requ return UNLANG_ACTION_PUSHED_CHILD; } -static unlang_action_t unlang_timeout_xlat_done(UNUSED rlm_rcode_t *p_result, UNUSED request_t *request, unlang_stack_frame_t *frame) +static unlang_action_t unlang_timeout_xlat_done(rlm_rcode_t *p_result, request_t *request, unlang_stack_frame_t *frame) { unlang_frame_state_timeout_t *state = talloc_get_type_abort(frame->state, unlang_frame_state_timeout_t); - fr_value_box_t *box = fr_dlist_head(&state->result); + fr_value_box_t *box = fr_value_box_list_head(&state->result); /* * compile_timeout() ensures that the tmpl is cast to time_delta, so we don't have to do any more work here. diff --git a/src/lib/unlang/tmpl.c b/src/lib/unlang/tmpl.c index fd116c24560..57dc99c5640 100644 --- a/src/lib/unlang/tmpl.c +++ b/src/lib/unlang/tmpl.c @@ -85,7 +85,7 @@ static unlang_action_t unlang_tmpl_resume(rlm_rcode_t *p_result, request_t *requ return UNLANG_ACTION_CALCULATE_RESULT; } - if (state->out) fr_dlist_move(state->out, &state->list); + if (state->out) fr_value_box_list_move(state->out, &state->list); if (state->resume) return state->resume(p_result, request, state->rctx); @@ -108,14 +108,14 @@ static unlang_action_t unlang_tmpl_exec_wait_final(rlm_rcode_t *p_result, reques * care about output, and we don't care about the programs exit status. */ if (state->exec.failed) { - fr_dlist_talloc_free(&state->list); + fr_value_box_list_talloc_free(&state->list); goto resume; } fr_assert(state->exec.pid < 0); /* Assert this has been cleaned up */ if (!state->args.exec.stdout_on_error && (state->exec.status != 0)) { - fr_assert(fr_dlist_empty(&state->list)); + fr_assert(fr_value_box_list_empty(&state->list)); goto resume; } @@ -148,7 +148,7 @@ static unlang_action_t unlang_tmpl_exec_wait_final(rlm_rcode_t *p_result, reques *p_result = RLM_MODULE_FAIL; return UNLANG_ACTION_CALCULATE_RESULT; } - fr_dlist_insert_head(&state->list, box); + fr_value_box_list_insert_head(&state->list, box); } resume: @@ -183,7 +183,7 @@ static unlang_action_t unlang_tmpl_exec_wait_resume(rlm_rcode_t *p_result, reque return UNLANG_ACTION_CALCULATE_RESULT; } - fr_dlist_talloc_free(&state->list); /* this is the xlat expansion, and not the output string we want */ + fr_value_box_list_talloc_free(&state->list); /* this is the xlat expansion, and not the output string we want */ frame_repeat(frame, unlang_tmpl_exec_wait_final); return UNLANG_ACTION_YIELD; @@ -255,8 +255,8 @@ push: * @param[in] args where the status of exited programs will be stored. * Used only for #TMPL_TYPE_EXEC. */ -int unlang_tmpl_push(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request, - tmpl_t const *tmpl, unlang_tmpl_args_t *args) +unlang_action_t unlang_tmpl_push(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, + tmpl_t const *tmpl, unlang_tmpl_args_t *args) { unlang_stack_t *stack = request->stack; unlang_stack_frame_t *frame; diff --git a/src/lib/unlang/tmpl.h b/src/lib/unlang/tmpl.h index fbf145bf899..ff10f6592c3 100644 --- a/src/lib/unlang/tmpl.h +++ b/src/lib/unlang/tmpl.h @@ -30,8 +30,8 @@ extern "C" { #endif -#include #include +#include #include /** Flags that show the type of arguments included @@ -106,7 +106,7 @@ typedef void (*fr_unlang_tmpl_signal_t)(request_t *request, void *rctx, fr_state */ typedef unlang_action_t (*fr_unlang_tmpl_resume_t)(rlm_rcode_t *p_result, request_t *request, void *rctx); -int unlang_tmpl_push(TALLOC_CTX *ctx, fr_value_box_list_t *out, +int unlang_tmpl_push(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, tmpl_t const *tmpl, unlang_tmpl_args_t *args) CC_HINT(warn_unused_result); diff --git a/src/lib/unlang/tmpl_priv.h b/src/lib/unlang/tmpl_priv.h index f710250cd13..a85f4ca242a 100644 --- a/src/lib/unlang/tmpl_priv.h +++ b/src/lib/unlang/tmpl_priv.h @@ -36,8 +36,8 @@ extern "C" { */ typedef struct { TALLOC_CTX *ctx; //!< for allocating value boxes - fr_value_box_list_t *out; //!< output list if the exec succeeds - fr_value_box_list_t list; //!< our intermediate working list + FR_DLIST_HEAD(fr_value_box_list) *out; //!< output list if the exec succeeds + FR_DLIST_HEAD(fr_value_box_list) list; //!< our intermediate working list void *rctx; //!< for resume fr_unlang_tmpl_resume_t resume; //!< resumption handler diff --git a/src/lib/unlang/xlat.c b/src/lib/unlang/xlat.c index bd76dde91a5..4452c037523 100644 --- a/src/lib/unlang/xlat.c +++ b/src/lib/unlang/xlat.c @@ -46,7 +46,7 @@ typedef struct { /* * For func and alternate */ - fr_value_box_list_t out; //!< Head of the result of a nested + FR_DLIST_HEAD(fr_value_box_list) out; //!< Head of the result of a nested ///< expansion. bool alternate; //!< record which alternate branch we ///< previously took. @@ -186,7 +186,7 @@ int unlang_xlat_timeout_add(request_t *request, * - 0 on success. * - -1 on failure. */ -static int unlang_xlat_push_internal(TALLOC_CTX *ctx, bool *p_success, fr_value_box_list_t *out, +static int unlang_xlat_push_internal(TALLOC_CTX *ctx, bool *p_success, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, xlat_exp_head_t const *xlat, xlat_exp_t *node, bool top_frame) { /** Static instruction for performing xlat evaluations @@ -250,7 +250,7 @@ static int unlang_xlat_push_internal(TALLOC_CTX *ctx, bool *p_success, fr_value_ /* * Initialise the input and output lists */ - fr_dcursor_init(&state->values, out); + fr_dcursor_init(&state->values, fr_value_box_list_dlist_head(out)); fr_value_box_list_init(&state->out); return 0; @@ -270,7 +270,7 @@ static int unlang_xlat_push_internal(TALLOC_CTX *ctx, bool *p_success, fr_value_ * - 0 on success. * - -1 on failure. */ -int unlang_xlat_push(TALLOC_CTX *ctx, bool *p_success, fr_value_box_list_t *out, +int unlang_xlat_push(TALLOC_CTX *ctx, bool *p_success, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, xlat_exp_head_t const *xlat, bool top_frame) { (void) talloc_get_type_abort_const(xlat, xlat_exp_head_t); @@ -290,7 +290,7 @@ int unlang_xlat_push(TALLOC_CTX *ctx, bool *p_success, fr_value_box_list_t *out, * - 0 on success. * - -1 on failure. */ -int unlang_xlat_push_node(TALLOC_CTX *ctx, bool *p_success, fr_value_box_list_t *out, +int unlang_xlat_push_node(TALLOC_CTX *ctx, bool *p_success, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, xlat_exp_t *node) { return unlang_xlat_push_internal(ctx, p_success, out, request, NULL, node, UNLANG_TOP_FRAME); @@ -315,7 +315,7 @@ static unlang_action_t unlang_xlat_repeat(rlm_rcode_t *p_result, request_t *requ * at this level. A frame may be used to evaluate * multiple sibling nodes. */ - fr_dlist_talloc_free(&state->out); + fr_value_box_list_talloc_free(&state->out); if (unlang_xlat_push(state->ctx, state->success, &state->out, request, child, false) < 0) { *p_result = RLM_MODULE_FAIL; REXDENT(); @@ -377,7 +377,7 @@ static unlang_action_t unlang_xlat(rlm_rcode_t *p_result, request_t *request, un * at this level. A frame may be used to evaluate * multiple sibling nodes. */ - fr_dlist_talloc_free(&state->out); + fr_value_box_list_talloc_free(&state->out); if (unlang_xlat_push(state->ctx, state->success, &state->out, request, child, false) < 0) { *p_result = RLM_MODULE_FAIL; return UNLANG_ACTION_STOP_PROCESSING; diff --git a/src/lib/unlang/xlat.h b/src/lib/unlang/xlat.h index 0d98d6aa5d3..c76cff2afb3 100644 --- a/src/lib/unlang/xlat.h +++ b/src/lib/unlang/xlat.h @@ -205,7 +205,7 @@ typedef void (*fr_unlang_xlat_fd_event_t)(xlat_ctx_t const *xctx, request_t *req * - XLAT_ACTION_FAIL the xlat function failed. */ typedef xlat_action_t (*xlat_func_t)(TALLOC_CTX *ctx, fr_dcursor_t *out, - xlat_ctx_t const *xctx, request_t *request, fr_value_box_list_t *in); + xlat_ctx_t const *xctx, request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in); /** A callback when the request gets a fr_state_signal_t. * @@ -427,7 +427,7 @@ int xlat_purify_op(TALLOC_CTX *ctx, xlat_exp_t **out, xlat_exp_t *lhs, fr_token int unlang_xlat_timeout_add(request_t *request, fr_unlang_xlat_timeout_t callback, void const *rctx, fr_time_t when); -int unlang_xlat_push(TALLOC_CTX *ctx, bool *p_success, fr_value_box_list_t *out, +int unlang_xlat_push(TALLOC_CTX *ctx, bool *p_success, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, xlat_exp_head_t const *head, bool top_frame) CC_HINT(warn_unused_result); diff --git a/src/lib/unlang/xlat_builtin.c b/src/lib/unlang/xlat_builtin.c index d83dd5ad34e..69123af30d8 100644 --- a/src/lib/unlang/xlat_builtin.c +++ b/src/lib/unlang/xlat_builtin.c @@ -571,7 +571,7 @@ typedef struct { */ static xlat_action_t xlat_redundant_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_redundant_inst_t const *xri = talloc_get_type_abort_const(xctx->inst, xlat_redundant_inst_t); xlat_redundant_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, xlat_redundant_rctx_t); @@ -602,7 +602,7 @@ static xlat_action_t xlat_redundant_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, /* * Push the next child... */ - if (unlang_xlat_push(ctx, &rctx->last_success, out->dlist, + if (unlang_xlat_push(ctx, &rctx->last_success, (FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, request, *rctx->current, UNLANG_SUB_FRAME) < 0) goto error; return XLAT_ACTION_PUSH_UNLANG; @@ -613,7 +613,7 @@ static xlat_action_t xlat_redundant_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t xlat_load_balance_resume(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, xlat_ctx_t const *xctx, - UNUSED request_t *request, UNUSED fr_value_box_list_t *in) + UNUSED request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_redundant_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, xlat_redundant_rctx_t); xlat_action_t xa = rctx->last_success ? XLAT_ACTION_DONE : XLAT_ACTION_FAIL; @@ -629,7 +629,7 @@ static xlat_action_t xlat_load_balance_resume(UNUSED TALLOC_CTX *ctx, UNUSED fr_ */ static xlat_action_t xlat_redundant(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_redundant_inst_t const *xri = talloc_get_type_abort_const(xctx->inst, xlat_redundant_inst_t); xlat_redundant_rctx_t *rctx; @@ -671,7 +671,7 @@ static xlat_action_t xlat_redundant(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_assert(0); } - if (unlang_xlat_push(ctx, &rctx->last_success, out->dlist, + if (unlang_xlat_push(ctx, &rctx->last_success, (FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, request, *rctx->current, UNLANG_SUB_FRAME) < 0) return XLAT_ACTION_FAIL; return XLAT_ACTION_PUSH_UNLANG; @@ -953,11 +953,11 @@ static xlat_arg_parser_t const xlat_func_debug_args[] = { */ static xlat_action_t xlat_func_debug(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { int level = 0; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); /* * Expand to previous (or current) level @@ -1114,13 +1114,13 @@ void xlat_debug_attr_list(request_t *request, fr_pair_list_t const *list) */ static xlat_action_t xlat_func_debug_attr(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_t *vp; fr_dcursor_t cursor; tmpl_dcursor_ctx_t cc; tmpl_t *vpt; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); char const *fmt; if (!RDEBUG_ENABLED2) return XLAT_ACTION_DONE; /* NOOP if debugging isn't enabled */ @@ -1167,11 +1167,11 @@ static xlat_action_t xlat_func_debug_attr(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcur */ static xlat_action_t xlat_func_flatten(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_t *vp; tmpl_t *vpt; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); char const *fmt; fmt = attr->vb_strvalue; @@ -1213,11 +1213,11 @@ static xlat_action_t xlat_func_flatten(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor */ static xlat_action_t xlat_func_unflatten(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_t *vp; tmpl_t *vpt; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); char const *fmt; fmt = attr->vb_strvalue; @@ -1248,12 +1248,12 @@ static xlat_action_t xlat_func_unflatten(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcurs static xlat_action_t xlat_func_untaint(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb; fr_value_box_list_untaint(in); - while ((vb = fr_dlist_pop_head(in)) != NULL) { + while ((vb = fr_value_box_list_pop_head(in)) != NULL) { fr_dcursor_append(out, vb); } @@ -1262,12 +1262,12 @@ static xlat_action_t xlat_func_untaint(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out static xlat_action_t xlat_func_taint(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb; fr_value_box_list_taint(in); - while ((vb = fr_dlist_pop_head(in)) != NULL) { + while ((vb = fr_value_box_list_pop_head(in)) != NULL) { fr_dcursor_append(out, vb); } @@ -1298,11 +1298,11 @@ update request { */ static xlat_action_t xlat_func_explode(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *strings = fr_dlist_head(in); - fr_value_box_list_t *list = &strings->vb_group; - fr_value_box_t *delim_vb = fr_dlist_next(in, strings); + fr_value_box_t *strings = fr_value_box_list_head(in); + FR_DLIST_HEAD(fr_value_box_list) *list = &strings->vb_group; + fr_value_box_t *delim_vb = fr_value_box_list_next(in, strings); ssize_t delim_len; char const *delim; fr_value_box_t *string, *vb; @@ -1316,7 +1316,7 @@ static xlat_action_t xlat_func_explode(TALLOC_CTX *ctx, fr_dcursor_t *out, delim = delim_vb->vb_strvalue; delim_len = delim_vb->vb_length; - while((string = fr_dlist_pop_head(list))) { + while((string = fr_value_box_list_pop_head(list))) { fr_sbuff_t sbuff = FR_SBUFF_IN(string->vb_strvalue, string->vb_length); fr_sbuff_marker_t m_start; @@ -1379,14 +1379,14 @@ update request { */ static xlat_action_t xlat_func_integer(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *in_vb = fr_dlist_head(in); + fr_value_box_t *in_vb = fr_value_box_list_head(in); char const *p; fr_strerror_clear(); /* Make sure we don't print old errors */ - fr_dlist_remove(in, in_vb); + fr_value_box_list_remove(in, in_vb); switch (in_vb->type) { default: @@ -1508,11 +1508,11 @@ static xlat_arg_parser_t const xlat_func_map_arg = { */ static xlat_action_t xlat_func_map(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { map_t *map = NULL; int ret; - fr_value_box_t *fmt_vb = fr_dlist_head(in); + fr_value_box_t *fmt_vb = fr_value_box_list_head(in); fr_value_box_t *vb; tmpl_rules_t attr_rules = { @@ -1588,7 +1588,7 @@ static xlat_arg_parser_t const xlat_func_next_time_args[] = { */ static xlat_action_t xlat_func_next_time(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { long num; @@ -1596,7 +1596,7 @@ static xlat_action_t xlat_func_next_time(TALLOC_CTX *ctx, fr_dcursor_t *out, char *q; time_t now; struct tm *local, local_buff; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); fr_value_box_t *vb; /* @@ -1671,7 +1671,7 @@ typedef struct { */ static xlat_action_t xlat_eval_resume(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, xlat_ctx_t const *xctx, - UNUSED request_t *request, UNUSED fr_value_box_list_t *in) + UNUSED request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_eval_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, xlat_eval_rctx_t); xlat_action_t xa = rctx->last_success ? XLAT_ACTION_DONE : XLAT_ACTION_FAIL; @@ -1693,10 +1693,10 @@ static xlat_arg_parser_t const xlat_func_eval_arg = { */ static xlat_action_t xlat_func_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_eval_rctx_t *rctx; - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); /* * These are escaping rules applied to the @@ -1757,7 +1757,7 @@ static xlat_action_t xlat_func_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, if (unlang_xlat_yield(request, xlat_eval_resume, NULL, rctx) != XLAT_ACTION_YIELD) goto error; - if (unlang_xlat_push(ctx, &rctx->last_success, out->dlist, + if (unlang_xlat_push(ctx, &rctx->last_success, (FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, request, rctx->ex, UNLANG_SUB_FRAME) < 0) goto error; return XLAT_ACTION_PUSH_UNLANG; @@ -1769,10 +1769,10 @@ static xlat_action_t xlat_func_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t xlat_func_expr(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_eval_rctx_t *rctx; - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); /* * These are escaping rules applied to the @@ -1833,7 +1833,7 @@ static xlat_action_t xlat_func_expr(TALLOC_CTX *ctx, fr_dcursor_t *out, if (unlang_xlat_yield(request, xlat_eval_resume, NULL, rctx) != XLAT_ACTION_YIELD) goto error; - if (unlang_xlat_push(ctx, &rctx->last_success, out->dlist, + if (unlang_xlat_push(ctx, &rctx->last_success, (FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, request, rctx->ex, UNLANG_SUB_FRAME) < 0) goto error; return XLAT_ACTION_PUSH_UNLANG; @@ -1861,15 +1861,15 @@ static xlat_arg_parser_t const xlat_func_pad_args[] = { */ static xlat_action_t xlat_func_lpad(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *args) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *args) { - fr_value_box_t *values = fr_dlist_head(args); - fr_value_box_list_t *list = &values->vb_group; - fr_value_box_t *pad = fr_dlist_next(args, values); + fr_value_box_t *values = fr_value_box_list_head(args); + FR_DLIST_HEAD(fr_value_box_list) *list = &values->vb_group; + fr_value_box_t *pad = fr_value_box_list_next(args, values); /* coverity[dereference] */ size_t pad_len = (size_t)pad->vb_uint64; /* coverity[dereference] */ - fr_value_box_t *fill = fr_dlist_next(args, pad); + fr_value_box_t *fill = fr_value_box_list_next(args, pad); char const *fill_str = NULL; size_t fill_len = 0; @@ -1888,7 +1888,7 @@ static xlat_action_t xlat_func_lpad(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, fill_len = 1; } - while ((in = fr_dlist_pop_head(list))) { + while ((in = fr_value_box_list_pop_head(list))) { size_t len = talloc_array_length(in->vb_strvalue) - 1; size_t remaining; char *buff; @@ -1951,14 +1951,14 @@ static xlat_action_t xlat_func_lpad(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t xlat_func_rpad(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *args) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *args) { - fr_value_box_t *values = fr_dlist_head(args); - fr_value_box_list_t *list = &values->vb_group; - fr_value_box_t *pad = fr_dlist_next(args, values); + fr_value_box_t *values = fr_value_box_list_head(args); + FR_DLIST_HEAD(fr_value_box_list) *list = &values->vb_group; + fr_value_box_t *pad = fr_value_box_list_next(args, values); /* coverity[dereference] */ size_t pad_len = (size_t)pad->vb_uint64; - fr_value_box_t *fill = fr_dlist_next(args, pad); + fr_value_box_t *fill = fr_value_box_list_next(args, pad); char const *fill_str = NULL; size_t fill_len = 0; @@ -1977,7 +1977,7 @@ static xlat_action_t xlat_func_rpad(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, fill_len = 1; } - while ((in = fr_dlist_pop_head(list))) { + while ((in = fr_value_box_list_pop_head(list))) { size_t len = talloc_array_length(in->vb_strvalue) - 1; size_t remaining; char *buff; @@ -2031,13 +2031,13 @@ static xlat_arg_parser_t const xlat_func_base64_encode_arg = { */ static xlat_action_t xlat_func_base64_encode(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *args) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *args) { size_t alen; ssize_t elen; char *buff; fr_value_box_t *vb; - fr_value_box_t *in = fr_dlist_head(args); + fr_value_box_t *in = fr_value_box_list_head(args); alen = FR_BASE64_ENC_LENGTH(in->vb_length); @@ -2078,13 +2078,13 @@ static xlat_arg_parser_t const xlat_func_base64_decode_arg = { */ static xlat_action_t xlat_func_base64_decode(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *args) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *args) { size_t alen; ssize_t declen = 0; uint8_t *decbuf; fr_value_box_t *vb; - fr_value_box_t *in = fr_dlist_head(args); + fr_value_box_t *in = fr_value_box_list_head(args); alen = FR_BASE64_DEC_LENGTH(in->vb_length); MEM(vb = fr_value_box_alloc_null(ctx)); @@ -2126,7 +2126,7 @@ static xlat_arg_parser_t const xlat_func_bin_arg = { */ static xlat_action_t xlat_func_bin(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *result; char const *p, *end; @@ -2135,7 +2135,7 @@ static xlat_action_t xlat_func_bin(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_sbuff_parse_error_t err; fr_value_box_t *hex; - hex = fr_dlist_head(in); + hex = fr_value_box_list_head(in); len = hex->vb_length; if ((len > 1) && (len & 0x01)) { REDEBUG("Input data length must be >1 and even, got %zu", len); @@ -2194,9 +2194,9 @@ static xlat_arg_parser_t const xlat_func_cast_args[] = { */ static xlat_action_t xlat_func_cast(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *name = fr_dlist_head(in); + fr_value_box_t *name = fr_value_box_list_head(in); fr_value_box_t *arg; fr_type_t type; @@ -2232,7 +2232,7 @@ static xlat_action_t xlat_func_cast(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_sbuff_t *agg; fr_value_box_t *dst; - (void) fr_dlist_pop_head(in); + (void) fr_value_box_list_pop_head(in); talloc_free(name); FR_SBUFF_TALLOC_THREAD_LOCAL(&agg, 256, 8192); @@ -2254,21 +2254,21 @@ static xlat_action_t xlat_func_cast(TALLOC_CTX *ctx, fr_dcursor_t *out, * Copy inputs to outputs, casting them along the way. */ arg = name; - while ((arg = fr_dlist_next(in, arg)) != NULL) { + while ((arg = fr_value_box_list_next(in, arg)) != NULL) { fr_value_box_t *vb, *p; fr_assert(arg->type == FR_TYPE_GROUP); - vb = fr_dlist_head(&arg->vb_group); + vb = fr_value_box_list_head(&arg->vb_group); while (vb) { - p = fr_dlist_remove(&arg->vb_group, vb); + p = fr_value_box_list_remove(&arg->vb_group, vb); if (fr_value_box_cast_in_place(vb, vb, type, NULL) < 0) { RPEDEBUG("Failed casting %pV to data type '%s'", vb, fr_type_to_str(type)); return XLAT_ACTION_FAIL; } fr_dcursor_append(out, vb); - vb = fr_dlist_next(&arg->vb_group, p); + vb = fr_value_box_list_next(&arg->vb_group, p); } } @@ -2297,11 +2297,11 @@ static xlat_arg_parser_t const xlat_func_concat_args[] = { */ static xlat_action_t xlat_func_concat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *result; - fr_value_box_t *list = fr_dlist_head(in); - fr_value_box_t *separator = fr_dlist_next(in, list); + fr_value_box_t *list = fr_value_box_list_head(in); + fr_value_box_t *separator = fr_value_box_list_next(in, list); char *buff; char const *sep; @@ -2343,10 +2343,10 @@ static xlat_arg_parser_t const xlat_func_hex_arg = { */ static xlat_action_t xlat_func_hex(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { char *new_buff; - fr_value_box_t *bin = fr_dlist_pop_head(in); /* First argument */ + fr_value_box_t *bin = fr_value_box_list_pop_head(in); /* First argument */ /* * Use existing box, but with new buffer @@ -2375,12 +2375,12 @@ typedef enum { } hmac_type; static xlat_action_t xlat_hmac(TALLOC_CTX *ctx, fr_dcursor_t *out, - fr_value_box_list_t *in, uint8_t *digest, int digest_len, hmac_type type) + FR_DLIST_HEAD(fr_value_box_list) *in, uint8_t *digest, int digest_len, hmac_type type) { fr_value_box_t *vb, *data, *key; - data = fr_dlist_head(in); - key = fr_dlist_next(in, data); + data = fr_value_box_list_head(in); + key = fr_value_box_list_next(in, data); if (type == HMAC_MD5) { /* coverity[dereference] */ @@ -2415,7 +2415,7 @@ static xlat_arg_parser_t const xlat_hmac_args[] = { */ static xlat_action_t xlat_func_hmac_md5(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { uint8_t digest[MD5_DIGEST_LENGTH]; return xlat_hmac(ctx, out, in, digest, MD5_DIGEST_LENGTH, HMAC_MD5); @@ -2433,7 +2433,7 @@ static xlat_action_t xlat_func_hmac_md5(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t xlat_func_hmac_sha1(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { uint8_t digest[SHA1_DIGEST_LENGTH]; return xlat_hmac(ctx, out, in, digest, SHA1_DIGEST_LENGTH, HMAC_SHA1); @@ -2449,27 +2449,27 @@ static xlat_arg_parser_t const xlat_func_join_args[] = { */ static xlat_action_t xlat_func_join(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *arg = NULL, *vb, *p; - while ((arg = fr_dlist_next(in, arg))) { + while ((arg = fr_value_box_list_next(in, arg))) { fr_assert(arg->type == FR_TYPE_GROUP); - vb = fr_dlist_head(&arg->vb_group); + vb = fr_value_box_list_head(&arg->vb_group); while (vb) { - p = fr_dlist_remove(&arg->vb_group, vb); + p = fr_value_box_list_remove(&arg->vb_group, vb); fr_dcursor_append(out, vb); - vb = fr_dlist_next(&arg->vb_group, p); + vb = fr_value_box_list_next(&arg->vb_group, p); } } return XLAT_ACTION_DONE; } -static void ungroup(fr_dcursor_t *out, fr_value_box_list_t *in) +static void ungroup(fr_dcursor_t *out, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb; - while ((vb = fr_dlist_pop_head(in)) != NULL) { + while ((vb = fr_value_box_list_pop_head(in)) != NULL) { if (vb->type != FR_TYPE_GROUP) { fr_dcursor_append(out, vb); continue; @@ -2483,11 +2483,11 @@ static void ungroup(fr_dcursor_t *out, fr_value_box_list_t *in) */ static xlat_action_t xlat_func_ungroup(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *arg = NULL; - while ((arg = fr_dlist_next(in, arg)) != NULL) { + while ((arg = fr_value_box_list_next(in, arg)) != NULL) { fr_assert(arg->type == FR_TYPE_GROUP); ungroup(out, &arg->vb_group); @@ -2514,12 +2514,12 @@ static xlat_arg_parser_t const xlat_func_length_args[] = { */ static xlat_action_t xlat_func_length(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb = NULL; - while ((vb = fr_dlist_next(in, vb))) { + while ((vb = fr_value_box_list_next(in, vb))) { fr_value_box_t *my; MEM(my = fr_value_box_alloc(ctx, FR_TYPE_SIZE, NULL, false)); @@ -2547,11 +2547,11 @@ static xlat_arg_parser_t const xlat_func_md4_arg = { */ static xlat_action_t xlat_func_md4(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { uint8_t digest[MD5_DIGEST_LENGTH]; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); if (in_head) { fr_md4_calc(digest, in_head->vb_octets, in_head->vb_length); @@ -2584,11 +2584,11 @@ static xlat_arg_parser_t const xlat_func_md5_arg = { */ static xlat_action_t xlat_func_md5(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { uint8_t digest[MD5_DIGEST_LENGTH]; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); if (in_head) { fr_md5_calc(digest, in_head->vb_octets, in_head->vb_length); @@ -2627,7 +2627,7 @@ exec echo { */ static xlat_action_t xlat_func_module(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb = NULL; @@ -2664,7 +2664,7 @@ static xlat_arg_parser_t const xlat_func_pack_arg = { */ static xlat_action_t xlat_func_pack(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb; @@ -2672,7 +2672,7 @@ static xlat_action_t xlat_func_pack(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, * Input boxes are already cast to FR_TYPE_OCTETS and concatenated * by the input argument parser - so simply move to the output */ - vb = fr_dlist_pop_head(in); + vb = fr_value_box_list_pop_head(in); fr_dcursor_append(out, vb); return XLAT_ACTION_DONE; @@ -2701,13 +2701,13 @@ static xlat_arg_parser_t const xlat_func_pairs_args[] = { */ static xlat_action_t xlat_func_pairs(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { tmpl_t *vpt = NULL; fr_dcursor_t cursor; tmpl_dcursor_ctx_t cc; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); fr_pair_t *vp; @@ -2764,11 +2764,11 @@ static xlat_arg_parser_t const xlat_func_rand_arg = { */ static xlat_action_t xlat_func_rand(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { int64_t result; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); result = in_head->vb_uint32; @@ -2821,7 +2821,7 @@ static xlat_arg_parser_t const xlat_func_randstr_arg = { */ static xlat_action_t xlat_func_randstr(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { /* * Lookup tables for randstr char classes @@ -2842,7 +2842,7 @@ static xlat_action_t xlat_func_randstr(TALLOC_CTX *ctx, fr_dcursor_t *out, unsigned int reps; size_t outlen = 0; fr_value_box_t* vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); /** Max repetitions of a single character class * @@ -3001,9 +3001,9 @@ if ("foo" =~ /^(?.*)/) { */ static xlat_action_t xlat_func_regex(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); /* * Return the complete capture if no other capture is specified */ @@ -3036,7 +3036,7 @@ static xlat_action_t xlat_func_regex(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_value_box_t *vb; char *p; - if (fr_dlist_next(in, in_head)) { + if (fr_value_box_list_next(in, in_head)) { REDEBUG("Only one subcapture argument allowed"); return XLAT_ACTION_FAIL; } @@ -3108,12 +3108,12 @@ static xlat_arg_parser_t const xlat_func_sha_arg = { */ static xlat_action_t xlat_func_sha1(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { uint8_t digest[SHA1_DIGEST_LENGTH]; fr_sha1_ctx sha1_ctx; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); fr_sha1_init(&sha1_ctx); if (in_head) { @@ -3145,13 +3145,13 @@ static xlat_action_t xlat_func_sha1(TALLOC_CTX *ctx, fr_dcursor_t *out, #ifdef HAVE_OPENSSL_EVP_H static xlat_action_t xlat_evp_md(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in, EVP_MD const *md) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in, EVP_MD const *md) { uint8_t digest[EVP_MAX_MD_SIZE]; unsigned int digestlen; EVP_MD_CTX *md_ctx; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); md_ctx = EVP_MD_CTX_create(); EVP_DigestInit_ex(md_ctx, md, NULL); @@ -3175,7 +3175,7 @@ static xlat_action_t xlat_evp_md(TALLOC_CTX *ctx, fr_dcursor_t *out, static xlat_action_t xlat_func_##_md(TALLOC_CTX *ctx, fr_dcursor_t *out,\ xlat_ctx_t const *xctx, \ request_t *request,\ - fr_value_box_list_t *in)\ + FR_DLIST_HEAD(fr_value_box_list) *in)\ {\ return xlat_evp_md(ctx, out, xctx, request, in, EVP_##_md_func());\ } @@ -3211,9 +3211,9 @@ static xlat_arg_parser_t const xlat_func_string_arg = { */ static xlat_action_t xlat_func_string(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *in_head = fr_dlist_pop_head(in); + fr_value_box_t *in_head = fr_value_box_list_pop_head(in); /* * Casting and concat is done by arg processing @@ -3243,10 +3243,10 @@ static xlat_arg_parser_t const xlat_func_strlen_arg = { */ static xlat_action_t xlat_func_strlen(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_SIZE, NULL, false)); @@ -3282,7 +3282,7 @@ static xlat_action_t xlat_func_strlen(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t xlat_func_subst_regex(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, request_t *request, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { char const *p, *q, *end; char const *regex; @@ -3292,9 +3292,9 @@ static xlat_action_t xlat_func_subst_regex(TALLOC_CTX *ctx, fr_dcursor_t *out, regex_t *pattern; fr_regex_flags_t flags; fr_value_box_t *vb; - fr_value_box_t *subject_vb = fr_dlist_head(in); - fr_value_box_t *regex_vb = fr_dlist_next(in, subject_vb); - fr_value_box_t *rep_vb = fr_dlist_next(in, regex_vb); + fr_value_box_t *subject_vb = fr_value_box_list_head(in); + fr_value_box_t *regex_vb = fr_value_box_list_next(in, subject_vb); + fr_value_box_t *rep_vb = fr_value_box_list_next(in, regex_vb); /* coverity[dereference] */ p = regex_vb->vb_strvalue; @@ -3384,7 +3384,7 @@ static xlat_action_t xlat_func_subst(TALLOC_CTX *ctx, fr_dcursor_t *out, #else UNUSED xlat_ctx_t const *xctx, #endif - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { char const *p, *q, *end; char *vb_str; @@ -3393,8 +3393,8 @@ static xlat_action_t xlat_func_subst(TALLOC_CTX *ctx, fr_dcursor_t *out, size_t pattern_len, rep_len; fr_value_box_t *rep_vb, *vb; - fr_value_box_t *subject_vb = fr_dlist_head(in); - fr_value_box_t *pattern_vb = fr_dlist_next(in, subject_vb); + fr_value_box_t *subject_vb = fr_value_box_list_head(in); + fr_value_box_t *pattern_vb = fr_value_box_list_next(in, subject_vb); /* coverity[dereference] */ pattern = pattern_vb->vb_strvalue; @@ -3418,7 +3418,7 @@ static xlat_action_t xlat_func_subst(TALLOC_CTX *ctx, fr_dcursor_t *out, return XLAT_ACTION_FAIL; } - rep_vb = fr_dlist_next(in, pattern_vb); + rep_vb = fr_value_box_list_next(in, pattern_vb); rep = rep_vb->vb_strvalue; rep_len = rep_vb->vb_length; @@ -3458,11 +3458,11 @@ static xlat_action_t xlat_func_subst(TALLOC_CTX *ctx, fr_dcursor_t *out, * If upper is true, change to uppercase, otherwise, change to lowercase */ static xlat_action_t xlat_change_case(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, - UNUSED request_t *request, fr_value_box_list_t *in, bool upper) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in, bool upper) { char *p; char const *end; - fr_value_box_t *vb = fr_dlist_pop_head(in); + fr_value_box_t *vb = fr_value_box_list_pop_head(in); p = UNCONST(char *, vb->vb_strvalue); end = p + vb->vb_length; @@ -3497,7 +3497,7 @@ static xlat_arg_parser_t const xlat_change_case_arg = { */ static xlat_action_t xlat_func_tolower(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { return xlat_change_case(ctx, out, request, in, false); } @@ -3516,7 +3516,7 @@ static xlat_action_t xlat_func_tolower(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t xlat_func_toupper(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { return xlat_change_case(ctx, out, request, in, true); } @@ -3539,13 +3539,13 @@ static xlat_arg_parser_t const xlat_func_urlquote_arg = { */ static xlat_action_t xlat_func_urlquote(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { char const *p, *end; char *buff_p; size_t outlen = 0; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); p = in_head->vb_strvalue; end = p + in_head->vb_length; @@ -3621,14 +3621,14 @@ static xlat_arg_parser_t const xlat_func_urlunquote_arg = { */ static xlat_action_t xlat_func_urlunquote(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { char const *p, *end; char *buff_p; char *c1, *c2; size_t outlen = 0; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); p = in_head->vb_strvalue; end = p + in_head->vb_length; @@ -3694,7 +3694,7 @@ static xlat_arg_parser_t const protocol_decode_xlat_args[] = { */ static xlat_action_t protocol_decode_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { int decoded; fr_value_box_t *vb; @@ -3751,7 +3751,7 @@ static xlat_arg_parser_t const protocol_encode_xlat_args[] = { */ static xlat_action_t protocol_encode_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { tmpl_t *vpt; fr_pair_t *vp; @@ -3763,7 +3763,7 @@ static xlat_action_t protocol_encode_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, uint8_t binbuf[2048]; uint8_t *p = binbuf, *end = p + sizeof(binbuf); ssize_t len = 0; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); void *encode_ctx = NULL; fr_test_point_pair_encode_t const *tp_encode; diff --git a/src/lib/unlang/xlat_eval.c b/src/lib/unlang/xlat_eval.c index 4f060ac159d..56d1d9b3d8b 100644 --- a/src/lib/unlang/xlat_eval.c +++ b/src/lib/unlang/xlat_eval.c @@ -177,7 +177,7 @@ static char *xlat_fmt_aprint(TALLOC_CTX *ctx, xlat_exp_t const *node) * @param[in] node Being processed. * @param[in] args from previous expansion. */ -static inline void xlat_debug_log_expansion(request_t *request, xlat_exp_t const *node, fr_value_box_list_t const *args, UNUSED int line) +static inline void xlat_debug_log_expansion(request_t *request, xlat_exp_t const *node, FR_DLIST_HEAD(fr_value_box_list) const *args, UNUSED int line) { if (node->flags.constant) return; @@ -208,7 +208,7 @@ static inline void xlat_debug_log_expansion(request_t *request, xlat_exp_t const * @param[in] request The current request. * @param[in] result of the expansion. */ -static inline void xlat_debug_log_list_result(request_t *request, xlat_exp_t const *node, fr_value_box_list_t const *result) +static inline void xlat_debug_log_list_result(request_t *request, xlat_exp_t const *node, FR_DLIST_HEAD(fr_value_box_list) const *result) { if (node->flags.constant) return; @@ -243,7 +243,7 @@ static inline void xlat_debug_log_result(request_t *request, xlat_exp_t const *n * - XLAT_ACTION_DONE on success. * - XLAT_ACTION_FAIL on failure. */ -static xlat_action_t xlat_process_arg_list(TALLOC_CTX *ctx, fr_value_box_list_t *list, request_t *request, +static xlat_action_t xlat_process_arg_list(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *list, request_t *request, char const *name, xlat_arg_parser_t const *arg, unsigned int arg_num) { fr_value_box_t *vb; @@ -257,7 +257,7 @@ do { \ } \ } while (0) - if (fr_dlist_empty(list)) { + if (fr_value_box_list_empty(list)) { if (arg->required) { RWDEBUG("Function %s is missing required argument %u", name, arg_num); return XLAT_ACTION_FAIL; @@ -265,7 +265,7 @@ do { \ return XLAT_ACTION_DONE; } - vb = fr_dlist_head(list); + vb = fr_value_box_list_head(list); /* * Concatenate child boxes, casting to desired type, @@ -273,9 +273,9 @@ do { \ */ if (arg->concat) { if (arg->func) { - do ESCAPE(arg, vb, arg_num); while ((vb = fr_dlist_next(list, vb))); + do ESCAPE(arg, vb, arg_num); while ((vb = fr_value_box_list_next(list, vb))); - vb = fr_dlist_head(list); /* Reset */ + vb = fr_value_box_list_head(list); /* Reset */ } if (fr_value_box_list_concat_in_place(ctx, @@ -285,7 +285,7 @@ do { \ RPEDEBUG("Function %s failed concatenating arguments to type %s", name, fr_type_to_str(arg->type)); return XLAT_ACTION_FAIL; } - fr_assert(fr_dlist_num_elements(list) <= 1); + fr_assert(fr_value_box_list_num_elements(list) <= 1); return XLAT_ACTION_DONE; } @@ -295,12 +295,12 @@ do { \ * just one, cast to the correct type */ if (arg->single) { - if (fr_dlist_num_elements(list) > 1) { + if (fr_value_box_list_num_elements(list) > 1) { RPEDEBUG("Function %s was provided an incorrect number of values at argument %u, " "expected %s got %u", name, arg_num, arg->required ? "0-1" : "1", - fr_dlist_num_elements(list)); + fr_value_box_list_num_elements(list)); return XLAT_ACTION_FAIL; } @@ -328,13 +328,13 @@ do { \ if (vb->type == arg->type) continue; if (fr_value_box_cast_in_place(ctx, vb, arg->type, NULL) < 0) goto cast_error; - } while ((vb = fr_dlist_next(list, vb))); + } while ((vb = fr_value_box_list_next(list, vb))); /* * If it's not a void type we still need to escape the values */ } else if (arg->func) { - do ESCAPE(arg, vb, arg_num); while ((vb = fr_dlist_next(list, vb))); + do ESCAPE(arg, vb, arg_num); while ((vb = fr_value_box_list_next(list, vb))); } #undef ESCAPE @@ -356,7 +356,7 @@ do { \ * @param[in] func to call */ static inline CC_HINT(always_inline) -xlat_action_t xlat_process_args(TALLOC_CTX *ctx, fr_value_box_list_t *list, request_t *request, xlat_t const *func) +xlat_action_t xlat_process_args(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *list, request_t *request, xlat_t const *func) { xlat_arg_parser_t const *arg_p = func->args; xlat_action_t xa; @@ -384,7 +384,7 @@ xlat_action_t xlat_process_args(TALLOC_CTX *ctx, fr_value_box_list_t *list, requ * xlat consumes a sequence of arguments. */ case XLAT_INPUT_ARGS: - vb = fr_dlist_head(list); + vb = fr_value_box_list_head(list); while (arg_p->type != FR_TYPE_NULL) { /* * Separate check to see if the group @@ -416,7 +416,7 @@ xlat_action_t xlat_process_args(TALLOC_CTX *ctx, fr_value_box_list_t *list, requ * pre-advance, in case the vb is replaced * during processing. */ - next = fr_dlist_next(list, vb); + next = fr_value_box_list_next(list, vb); xa = xlat_process_arg_list(ctx, &vb->vb_group, request, func->name, arg_p, (unsigned int)((arg_p - func->args) + 1)); if (xa != XLAT_ACTION_DONE) return xa; @@ -424,7 +424,7 @@ xlat_action_t xlat_process_args(TALLOC_CTX *ctx, fr_value_box_list_t *list, requ /* * This argument doesn't exist. That might be OK, or it may be a fatal error. */ - if (fr_dlist_empty(&vb->vb_group)) { + if (fr_value_box_list_empty(&vb->vb_group)) { /* * Empty groups for optional arguments are OK, we can just stop processing the list. */ @@ -450,7 +450,7 @@ xlat_action_t xlat_process_args(TALLOC_CTX *ctx, fr_value_box_list_t *list, requ * accessing the box as vb_uint8, hoping that it's being passed * the right thing. */ - fr_dlist_remove(list, vb); + fr_value_box_list_remove(list, vb); talloc_free(vb); break; } @@ -471,7 +471,7 @@ xlat_action_t xlat_process_args(TALLOC_CTX *ctx, fr_value_box_list_t *list, requ * xlat_process_arg_list() has already done concatenations for us. */ if (arg_p->single || arg_p->concat) { - fr_dlist_replace(list, vb, fr_dlist_pop_head(&vb->vb_group)); + fr_value_box_list_replace(list, vb, fr_value_box_list_pop_head(&vb->vb_group)); talloc_free(vb); } @@ -501,7 +501,7 @@ xlat_action_t xlat_process_args(TALLOC_CTX *ctx, fr_value_box_list_t *list, requ * */ static inline CC_HINT(always_inline) -xlat_action_t xlat_eval_one_letter(TALLOC_CTX *ctx, fr_value_box_list_t *out, request_t *request, char letter) +xlat_action_t xlat_eval_one_letter(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, char letter) { char buffer[64]; @@ -667,19 +667,19 @@ xlat_action_t xlat_eval_one_letter(TALLOC_CTX *ctx, fr_value_box_list_t *out, re return XLAT_ACTION_FAIL; } - fr_dlist_insert_tail(out, value); + fr_value_box_list_insert_tail(out, value); return XLAT_ACTION_DONE; } typedef struct { int status; - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; } xlat_exec_rctx_t; static xlat_action_t xlat_exec_resume(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - UNUSED request_t *request, UNUSED fr_value_box_list_t *in) + UNUSED request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_exec_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, xlat_exec_rctx_t); @@ -688,7 +688,7 @@ static xlat_action_t xlat_exec_resume(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, return XLAT_ACTION_FAIL; } - fr_dlist_move(out->dlist, &rctx->list); + fr_value_box_list_move((FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, &rctx->list); return XLAT_ACTION_DONE; } @@ -723,7 +723,7 @@ void xlat_signal(xlat_func_signal_t signal, xlat_exp_t const *exp, */ xlat_action_t xlat_frame_eval_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_func_t resume, xlat_exp_t const *exp, - request_t *request, fr_value_box_list_t *result, void *rctx) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *result, void *rctx) { xlat_thread_inst_t *t; xlat_action_t xa; @@ -789,7 +789,7 @@ xlat_action_t xlat_frame_eval_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_t const **child, bool *alternate, request_t *request, xlat_exp_head_t const *head, xlat_exp_t const **in, - fr_value_box_list_t *result) + FR_DLIST_HEAD(fr_value_box_list) *result) { xlat_exp_t const *node = *in; @@ -800,7 +800,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, { xlat_action_t xa; xlat_thread_inst_t *t; - fr_value_box_list_t result_copy; + FR_DLIST_HEAD(fr_value_box_list) result_copy; t = xlat_thread_instance_find(node); fr_assert(t); @@ -827,7 +827,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, if (RDEBUG_ENABLED2) fr_value_box_list_acopy(unlang_interpret_frame_talloc_ctx(request), &result_copy, result); xa = xlat_process_args(ctx, result, request, node->call.func); if (xa == XLAT_ACTION_FAIL) { - fr_dlist_talloc_free(&result_copy); + fr_value_box_list_talloc_free(&result_copy); return xa; } @@ -842,7 +842,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_debug_log_expansion(request, *in, &result_copy, __LINE__); RINDENT(); } - fr_dlist_talloc_free(&result_copy); + fr_value_box_list_talloc_free(&result_copy); switch (xa) { case XLAT_ACTION_FAIL: @@ -877,7 +877,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, /* * No result from the first child, try the alternate */ - if (fr_dlist_empty(result)) { + if (fr_value_box_list_empty(result)) { /* * Already tried the alternate */ @@ -905,7 +905,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_debug_log_list_result(request, *in, result); VALUE_BOX_TALLOC_LIST_VERIFY(result); - fr_dlist_move(out->dlist, result); + fr_value_box_list_move((FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, result); } break; @@ -922,9 +922,9 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, MEM(arg = fr_value_box_alloc(ctx, FR_TYPE_GROUP, NULL, false)); - if (!fr_dlist_empty(result)) { + if (!fr_value_box_list_empty(result)) { VALUE_BOX_TALLOC_LIST_VERIFY(result); - fr_dlist_move(&arg->vb_group, result); + fr_value_box_list_move(&arg->vb_group, result); } // xlat_debug_log_expansion(request, *in, NULL, __LINE__); @@ -940,7 +940,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_assert(tmpl_is_exec(node->vpt)); if (tmpl_eval_cast(ctx, result, node->vpt) < 0) { - fr_dlist_talloc_free(result); + fr_value_box_list_talloc_free(result); return XLAT_ACTION_FAIL; } @@ -948,7 +948,7 @@ xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, * First entry is the command to run. Subsequent entries are the options to pass to the * command. */ - fr_dlist_move(out->dlist, result); + fr_value_box_list_move((FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, result); break; default: @@ -995,7 +995,7 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_ { xlat_action_t xa = XLAT_ACTION_DONE; xlat_exp_t const *node; - fr_value_box_list_t result; /* tmp list so debug works correctly */ + FR_DLIST_HEAD(fr_value_box_list) result; /* tmp list so debug works correctly */ fr_value_box_t *value; fr_value_box_list_init(&result); @@ -1009,9 +1009,9 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_ for (node = *in; node; node = xlat_exp_next(head, node)) { *in = node; /* Update node in our caller */ fr_dcursor_tail(out); /* Needed for debugging */ - VALUE_BOX_TALLOC_LIST_VERIFY(out->dlist); + VALUE_BOX_TALLOC_LIST_VERIFY((FR_DLIST_HEAD(fr_value_box_list) *)out->dlist); - fr_assert(fr_dlist_num_elements(&result) == 0); /* Should all have been moved */ + fr_assert(fr_value_box_list_num_elements(&result) == 0); /* Should all have been moved */ switch (node->type) { case XLAT_BOX: @@ -1042,12 +1042,12 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_ xlat_debug_log_expansion(request, node, NULL, __LINE__); if (xlat_eval_one_letter(ctx, &result, request, node->fmt[0]) == XLAT_ACTION_FAIL) { fail: - fr_dlist_talloc_free(&result); + fr_value_box_list_talloc_free(&result); xa = XLAT_ACTION_FAIL; goto finish; } xlat_debug_log_list_result(request, *in, &result); - fr_dlist_move(out->dlist, &result); + fr_value_box_list_move((FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, &result); continue; case XLAT_TMPL: @@ -1059,14 +1059,14 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_ tmpl_value(node->vpt)->tainted)); fr_value_box_copy(value, value, tmpl_value(node->vpt)); /* Also dups taint */ - fr_dlist_insert_tail(&result, value); + fr_value_box_list_insert_tail(&result, value); /* * Cast the results if necessary. */ if (tmpl_eval_cast(ctx, &result, node->vpt) < 0) goto fail; - fr_dlist_move(out->dlist, &result); + fr_value_box_list_move((FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, &result); continue; } else if (tmpl_is_attr(node->vpt) || tmpl_is_list(node->vpt)) { @@ -1114,7 +1114,7 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_ } xlat_debug_log_list_result(request, node, &result); - fr_dlist_move(out->dlist, &result); + fr_value_box_list_move((FR_DLIST_HEAD(fr_value_box_list) *)out->dlist, &result); continue; case XLAT_VIRTUAL: @@ -1211,7 +1211,7 @@ xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_ } finish: - VALUE_BOX_TALLOC_LIST_VERIFY(out->dlist); + VALUE_BOX_TALLOC_LIST_VERIFY((FR_DLIST_HEAD(fr_value_box_list) *)out->dlist); XLAT_DEBUG("** [%i] %s << %s", unlang_interpret_stack_depth(request), __FUNCTION__, fr_table_str_by_value(xlat_action_table, xa, "")); @@ -1221,7 +1221,7 @@ finish: static ssize_t xlat_eval_sync(TALLOC_CTX *ctx, char **out, request_t *request, xlat_exp_head_t const * const head, xlat_escape_legacy_t escape, void const *escape_ctx) { - fr_value_box_list_t result; + FR_DLIST_HEAD(fr_value_box_list) result; bool success = false; TALLOC_CTX *pool = talloc_new(NULL); rlm_rcode_t rcode; @@ -1255,15 +1255,15 @@ static ssize_t xlat_eval_sync(TALLOC_CTX *ctx, char **out, request_t *request, x } if (!success) goto eval_failed; - if (!fr_dlist_empty(&result)) { + if (!fr_value_box_list_empty(&result)) { if (escape) { fr_value_box_t *vb = NULL; /* * For tainted boxes perform the requested escaping */ - while ((vb = fr_dlist_next(&result, vb))) { - fr_dlist_t entry; + while ((vb = fr_value_box_list_next(&result, vb))) { + FR_DLIST_ENTRY(fr_value_box_list) entry; size_t len, real_len; char *escaped; @@ -1513,7 +1513,7 @@ int xlat_flatten_compiled_argv(TALLOC_CTX *ctx, xlat_exp_head_t ***argv, xlat_ex my_argv[i++] = talloc_steal(my_argv, node->group); } - fr_dlist_talloc_free(&head->dlist); + fr_value_box_list_talloc_free((FR_DLIST_HEAD(fr_value_box_list) *)&head->dlist); return count; } diff --git a/src/lib/unlang/xlat_expr.c b/src/lib/unlang/xlat_expr.c index 59250361c13..5a810845397 100644 --- a/src/lib/unlang/xlat_expr.c +++ b/src/lib/unlang/xlat_expr.c @@ -358,7 +358,7 @@ static xlat_arg_parser_t const binary_op_xlat_args[] = { static xlat_action_t xlat_binary_op(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in, + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in, fr_token_t op, fr_type_t default_type, fr_dict_attr_t const *enumv) { @@ -370,8 +370,8 @@ static xlat_action_t xlat_binary_op(TALLOC_CTX *ctx, fr_dcursor_t *out, /* * Each argument is a FR_TYPE_GROUP, with one or more elements in a list. */ - a = fr_dlist_head(in); - b = fr_dlist_next(in, a); + a = fr_value_box_list_head(in); + b = fr_value_box_list_next(in, a); #ifdef STATIC_ANALYZER if (!a || !b) return XLAT_ACTION_FAIL; @@ -384,22 +384,22 @@ static xlat_action_t xlat_binary_op(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_assert(b->type == FR_TYPE_GROUP); if (!fr_equality_op[op]) { - if (fr_dlist_num_elements(&a->vb_group) != 1) { + if (fr_value_box_list_num_elements(&a->vb_group) != 1) { REDEBUG("Expected one value as the first argument, got %d", - fr_dlist_num_elements(&a->vb_group)); + fr_value_box_list_num_elements(&a->vb_group)); return XLAT_ACTION_FAIL; } - if (fr_dlist_num_elements(&b->vb_group) != 1) { + if (fr_value_box_list_num_elements(&b->vb_group) != 1) { REDEBUG("Expected one value as the second argument, got %d", - fr_dlist_num_elements(&b->vb_group)); + fr_value_box_list_num_elements(&b->vb_group)); return XLAT_ACTION_FAIL; } rcode = fr_value_calc_binary_op(dst, dst, default_type, - fr_dlist_head(&a->vb_group), + fr_value_box_list_head(&a->vb_group), op, - fr_dlist_head(&b->vb_group)); + fr_value_box_list_head(&b->vb_group)); } else { rcode = fr_value_calc_list_cmp(dst, dst, &a->vb_group, op, &b->vb_group); } @@ -430,14 +430,14 @@ static xlat_arg_parser_t const xlat_paircmp_xlat_args[] = { */ static xlat_action_t xlat_paircmp_func(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *dst, *vb_da, *vb; fr_dict_attr_t const *da; char const *p; - vb_da = fr_dlist_head(in); - vb = fr_dlist_next(in, vb_da); + vb_da = fr_value_box_list_head(in); + vb = fr_value_box_list_next(in, vb_da); #ifdef STATIC_ANALYZER if (!vb_da || !vb) return XLAT_ACTION_FAIL; @@ -465,7 +465,7 @@ static xlat_action_t xlat_paircmp_func(TALLOC_CTX *ctx, fr_dcursor_t *out, #define XLAT_BINARY_FUNC(_name, _op) \ static xlat_action_t xlat_func_ ## _name(TALLOC_CTX *ctx, fr_dcursor_t *out, \ xlat_ctx_t const *xctx, \ - request_t *request, fr_value_box_list_t *in) \ + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) \ { \ return xlat_binary_op(ctx, out, xctx, request, in, _op, FR_TYPE_NULL, NULL); \ } @@ -484,7 +484,7 @@ XLAT_BINARY_FUNC(op_lshift, T_LSHIFT) #define XLAT_CMP_FUNC(_name, _op) \ static xlat_action_t xlat_func_ ## _name(TALLOC_CTX *ctx, fr_dcursor_t *out, \ xlat_ctx_t const *xctx, \ - request_t *request, fr_value_box_list_t *in) \ + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) \ { \ return xlat_binary_op(ctx, out, xctx, request, in, _op, FR_TYPE_BOOL, attr_expr_bool_enum); \ } @@ -505,7 +505,7 @@ typedef struct { typedef struct { bool last_success; - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; } xlat_regex_rctx_t; static fr_slen_t xlat_expr_print_regex(fr_sbuff_t *out, xlat_exp_t const *node, void *instance, fr_sbuff_escape_rules_t const *e_rules) @@ -647,7 +647,7 @@ static xlat_arg_parser_t const regex_op_xlat_args[] = { * - 0 for "no match". * - 1 for "match". */ -static xlat_action_t xlat_regex_match(TALLOC_CTX *ctx, request_t *request, fr_value_box_list_t *in, regex_t **preg, +static xlat_action_t xlat_regex_match(TALLOC_CTX *ctx, request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in, regex_t **preg, fr_dcursor_t *out, fr_token_t op) { uint32_t subcaptures; @@ -662,7 +662,7 @@ static xlat_action_t xlat_regex_match(TALLOC_CTX *ctx, request_t *request, fr_va FR_SBUFF_TALLOC_THREAD_LOCAL(&agg, 256, 8192); - arg = fr_dlist_head(in); + arg = fr_value_box_list_head(in); fr_assert(arg != NULL); fr_assert(arg->type == FR_TYPE_GROUP); @@ -670,16 +670,16 @@ static xlat_action_t xlat_regex_match(TALLOC_CTX *ctx, request_t *request, fr_va if (!subcaptures) subcaptures = REQUEST_MAX_REGEX + 1; /* +1 for %{0} (whole match) capture group */ MEM(regmatch = regex_match_data_alloc(NULL, subcaptures)); - while ((vb = fr_dlist_pop_head(&arg->vb_group)) != NULL) { + while ((vb = fr_value_box_list_pop_head(&arg->vb_group)) != NULL) { if (vb->type == FR_TYPE_STRING) { subject = vb->vb_strvalue; len = vb->vb_length; } else { - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; fr_value_box_list_init(&list); - fr_dlist_insert_head(&list, vb); + fr_value_box_list_insert_head(&list, vb); vb = NULL; /* @@ -735,7 +735,7 @@ done: static xlat_action_t xlat_regex_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_regex_inst_t const *inst = talloc_get_type_abort_const(xctx->inst, xlat_regex_inst_t); xlat_regex_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, xlat_regex_rctx_t); @@ -775,7 +775,7 @@ static xlat_action_t xlat_regex_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, static xlat_action_t xlat_regex_op(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in, + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in, fr_token_t op) { xlat_regex_inst_t const *inst = talloc_get_type_abort_const(xctx->inst, xlat_regex_inst_t); @@ -809,7 +809,7 @@ static xlat_action_t xlat_regex_op(TALLOC_CTX *ctx, fr_dcursor_t *out, #define XLAT_REGEX_FUNC(_name, _op) \ static xlat_action_t xlat_func_ ## _name(TALLOC_CTX *ctx, fr_dcursor_t *out, \ xlat_ctx_t const *xctx, \ - request_t *request, fr_value_box_list_t *in) \ + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) \ { \ return xlat_regex_op(ctx, out, xctx, request, in, _op); \ } @@ -827,7 +827,7 @@ typedef struct { bool last_success; fr_value_box_t *box; //!< output value-box int current; - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; } xlat_logical_rctx_t; static fr_slen_t xlat_expr_print_logical(fr_sbuff_t *out, xlat_exp_t const *node, void *instance, fr_sbuff_escape_rules_t const *e_rules) @@ -1092,21 +1092,19 @@ static int xlat_expr_logical_purify(xlat_exp_t *node, void *instance, request_t * * Empty lists are not truthy. */ -static bool xlat_logical_match(fr_value_box_t **dst, fr_value_box_list_t const *in, bool logical_or) +static bool xlat_logical_match(fr_value_box_t **dst, FR_DLIST_HEAD(fr_value_box_list) const *in, bool logical_or) { fr_value_box_t *last = NULL; /* * Empty lists are !truthy. */ - if (!fr_dlist_num_elements(in)) { - return false; - } + if (!fr_value_box_list_num_elements(in)) return false; /* * Loop over the input list. If the box is a group, then do this recursively. */ - fr_value_box_foreach(in, box) { + fr_value_box_list_foreach(in, box) { if (fr_box_is_group(box)) { if (!xlat_logical_match(dst, &box->vb_group, logical_or)) return false; continue; @@ -1145,7 +1143,7 @@ static bool xlat_logical_match(fr_value_box_t **dst, fr_value_box_list_t const * static xlat_action_t xlat_logical_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in); + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in); /** Process one argument of a logical operation. * @@ -1157,7 +1155,7 @@ static xlat_action_t xlat_logical_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t xlat_logical_process_arg(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_logical_inst_t const *inst = talloc_get_type_abort_const(xctx->inst, xlat_logical_inst_t); xlat_logical_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, xlat_logical_rctx_t); @@ -1183,7 +1181,7 @@ static xlat_action_t xlat_logical_process_arg(UNUSED TALLOC_CTX *ctx, UNUSED fr_ */ static xlat_action_t xlat_logical_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_logical_inst_t const *inst = talloc_get_type_abort_const(xctx->inst, xlat_logical_inst_t); xlat_logical_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, xlat_logical_rctx_t); @@ -1234,7 +1232,7 @@ static xlat_action_t xlat_logical_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, } next: - fr_dlist_talloc_free(&rctx->list); + fr_value_box_list_talloc_free(&rctx->list); rctx->current++; /* @@ -1252,7 +1250,7 @@ next: */ static xlat_action_t xlat_func_logical(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_logical_rctx_t *rctx; @@ -1274,7 +1272,7 @@ static xlat_arg_parser_t const unary_op_xlat_args[] = { static xlat_action_t xlat_func_unary_op(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in, fr_token_t op) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in, fr_token_t op) { int rcode; fr_value_box_t *dst, *group, *vb; @@ -1282,8 +1280,8 @@ static xlat_action_t xlat_func_unary_op(TALLOC_CTX *ctx, fr_dcursor_t *out, /* * We do some basic type checks here. */ - group = fr_dlist_head(in); - vb = fr_dlist_head(&group->vb_group); + group = fr_value_box_list_head(in); + vb = fr_value_box_list_head(&group->vb_group); /* * -NULL is an error @@ -1318,12 +1316,12 @@ static xlat_action_t xlat_func_unary_op(TALLOC_CTX *ctx, fr_dcursor_t *out, static xlat_action_t xlat_func_unary_not(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - UNUSED request_t *request, fr_value_box_list_t *in) + UNUSED request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *dst, *group, *vb; - group = fr_dlist_head(in); - vb = fr_dlist_head(&group->vb_group); + group = fr_value_box_list_head(in); + vb = fr_value_box_list_head(&group->vb_group); /* * Don't call calc_unary_op(), because we want the enum names. @@ -1345,14 +1343,14 @@ static xlat_action_t xlat_func_unary_not(TALLOC_CTX *ctx, fr_dcursor_t *out, static xlat_action_t xlat_func_unary_minus(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { return xlat_func_unary_op(ctx, out, xctx, request, in, T_SUB); } static xlat_action_t xlat_func_unary_complement(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { return xlat_func_unary_op(ctx, out, xctx, request, in, T_COMPLEMENT); } @@ -1418,10 +1416,10 @@ static xlat_arg_parser_t const xlat_func_rcode_arg = { */ static xlat_action_t xlat_func_rcode(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb; - fr_value_box_t *src = fr_dlist_head(in); + fr_value_box_t *src = fr_value_box_list_head(in); /* * Query the rcode if there's no argument. Otherwise do a boolean check if the passed string @@ -1451,7 +1449,7 @@ typedef struct { typedef struct { bool last_success; - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; } xlat_exists_rctx_t; static xlat_arg_parser_t const xlat_func_exists_arg = { @@ -1523,7 +1521,7 @@ static xlat_action_t xlat_attr_exists(TALLOC_CTX *ctx, fr_dcursor_t *out, static xlat_action_t xlat_exists_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_exists_rctx_t *rctx = talloc_get_type_abort(xctx->rctx, xlat_exists_rctx_t); ssize_t slen; @@ -1553,7 +1551,7 @@ static xlat_action_t xlat_exists_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, return XLAT_ACTION_FAIL; } - vb = fr_dlist_head(&rctx->list); + vb = fr_value_box_list_head(&rctx->list); slen = tmpl_afrom_attr_str(ctx, NULL, &vpt, vb->vb_strvalue, &(tmpl_rules_t) { @@ -1584,7 +1582,7 @@ static xlat_action_t xlat_exists_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t xlat_func_exists(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { xlat_exists_inst_t const *inst = talloc_get_type_abort_const(xctx->inst, xlat_exists_inst_t); xlat_exists_rctx_t *rctx; diff --git a/src/lib/unlang/xlat_pair.c b/src/lib/unlang/xlat_pair.c index 2351967f9f7..fca3ea02b03 100644 --- a/src/lib/unlang/xlat_pair.c +++ b/src/lib/unlang/xlat_pair.c @@ -89,7 +89,7 @@ static ssize_t fr_pair_decode_multi(TALLOC_CTX *ctx, fr_pair_list_t *out, fr_dic */ int xlat_decode_value_box_list(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *request, void *decode_ctx, fr_pair_decode_t decode, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { int decoded = 0; fr_value_box_t *vb = NULL; @@ -99,7 +99,7 @@ int xlat_decode_value_box_list(TALLOC_CTX *ctx, fr_pair_list_t *out, fr_pair_list_init(&head); - while ((vb = fr_dlist_next(in, vb))) { + while ((vb = fr_value_box_list_next(in, vb))) { ssize_t len; if (vb->type != FR_TYPE_OCTETS) { diff --git a/src/lib/unlang/xlat_priv.h b/src/lib/unlang/xlat_priv.h index 274829429a8..44a40348e92 100644 --- a/src/lib/unlang/xlat_priv.h +++ b/src/lib/unlang/xlat_priv.h @@ -327,12 +327,12 @@ void xlat_signal(xlat_func_signal_t signal, xlat_exp_t const *exp, xlat_action_t xlat_frame_eval_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_func_t resume, xlat_exp_t const *exp, - request_t *request, fr_value_box_list_t *result, void *rctx); + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *result, void *rctx); xlat_action_t xlat_frame_eval_repeat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_t const **child, bool *alternate, request_t *request, xlat_exp_head_t const *head, xlat_exp_t const **in, - fr_value_box_list_t *result) CC_HINT(nonnull(1,2,3,5)); + FR_DLIST_HEAD(fr_value_box_list) *result) CC_HINT(nonnull(1,2,3,5)); xlat_action_t xlat_frame_eval(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_exp_head_t const **child, request_t *request, xlat_exp_head_t const *head, xlat_exp_t const **in); @@ -345,12 +345,12 @@ void xlat_eval_free(void); void unlang_xlat_init(void); -int unlang_xlat_push_node(TALLOC_CTX *ctx, bool *p_success, fr_value_box_list_t *out, +int unlang_xlat_push_node(TALLOC_CTX *ctx, bool *p_success, FR_DLIST_HEAD(fr_value_box_list) *out, request_t *request, xlat_exp_t *node); int xlat_decode_value_box_list(TALLOC_CTX *ctx, fr_pair_list_t *out, request_t *request, void *decode_ctx, fr_pair_decode_t decode, - fr_value_box_list_t *in); + FR_DLIST_HEAD(fr_value_box_list) *in); /* * xlat_expr.c */ diff --git a/src/lib/unlang/xlat_purify.c b/src/lib/unlang/xlat_purify.c index edf5e69cd15..7338b9bda31 100644 --- a/src/lib/unlang/xlat_purify.c +++ b/src/lib/unlang/xlat_purify.c @@ -30,12 +30,12 @@ RCSID("$Id$") #include #include -static void xlat_value_list_to_xlat(xlat_exp_head_t *head, fr_value_box_list_t *list) +static void xlat_value_list_to_xlat(xlat_exp_head_t *head, FR_DLIST_HEAD(fr_value_box_list) *list) { fr_value_box_t *box; xlat_exp_t *node; - while ((box = fr_dlist_pop_head(list)) != NULL) { + while ((box = fr_value_box_list_pop_head(list)) != NULL) { MEM(node = xlat_exp_alloc_null(head)); node->type = XLAT_BOX; @@ -60,7 +60,7 @@ int xlat_purify_list(xlat_exp_head_t *head, request_t *request) int rcode; bool success; xlat_exp_head_t *group; - fr_value_box_list_t list; + FR_DLIST_HEAD(fr_value_box_list) list; xlat_flags_t our_flags; if (!head->flags.can_purify) return 0; diff --git a/src/lib/util/calc.c b/src/lib/util/calc.c index 660b21bc239..fbef36c02a8 100644 --- a/src/lib/util/calc.c +++ b/src/lib/util/calc.c @@ -2056,7 +2056,7 @@ int fr_value_calc_assignment_op(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_token_t */ rcode = 0; /* in case group is empty */ - while ((vb = fr_dlist_next(&src->vb_group, vb)) != NULL) { + while ((vb = fr_value_box_list_next(&src->vb_group, vb)) != NULL) { rcode = fr_value_calc_binary_op(ctx, dst, dst->type, dst, op, vb); if (rcode < 0) break; } @@ -2194,7 +2194,7 @@ int fr_value_calc_unary_op(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_token_t op, /** Apply a set of operations in order to create an output box. * */ -int fr_value_calc_list_op(TALLOC_CTX *ctx, fr_value_box_t *box, fr_token_t op, fr_value_box_list_t const *list) +int fr_value_calc_list_op(TALLOC_CTX *ctx, fr_value_box_t *box, fr_token_t op, FR_DLIST_HEAD(fr_value_box_list) const *list) { /* * For octets and string and prepend / append, figure out @@ -2209,7 +2209,7 @@ int fr_value_calc_list_op(TALLOC_CTX *ctx, fr_value_box_t *box, fr_token_t op, f uint8_t *str, *p; fr_value_box_t src; - fr_dlist_foreach(list,fr_value_box_t const, a) { + fr_value_box_list_foreach(list, a) { if (a->type != box->type) { len = 0; break; @@ -2231,7 +2231,7 @@ int fr_value_calc_list_op(TALLOC_CTX *ctx, fr_value_box_t *box, fr_token_t op, f } p = str; - fr_dlist_foreach(list,fr_value_box_t const, a) { + fr_value_box_list_foreach(list, a) { memcpy(p, a->vb_octets, a->vb_length); p += a->vb_length; tainted |= a->tainted; @@ -2249,7 +2249,7 @@ int fr_value_calc_list_op(TALLOC_CTX *ctx, fr_value_box_t *box, fr_token_t op, f } brute_force: - fr_dlist_foreach(list,fr_value_box_t const, a) { + fr_value_box_list_foreach(list, a) { if (fr_value_calc_binary_op(ctx, box, box->type, box, op, a) < 0) return -1; } @@ -2263,7 +2263,7 @@ brute_force: * This implementation is arguably wrong... it should be checking individual entries in list1 against individual entries in list2. * Instead, it checks if ANY entry in list1 matches ANY entry in list2. */ -int fr_value_calc_list_cmp(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_value_box_list_t const *list1, fr_token_t op, fr_value_box_list_t const *list2) +int fr_value_calc_list_cmp(TALLOC_CTX *ctx, fr_value_box_t *dst, FR_DLIST_HEAD(fr_value_box_list) const *list1, fr_token_t op, FR_DLIST_HEAD(fr_value_box_list) const *list2) { int rcode; bool invert = false; @@ -2279,8 +2279,8 @@ int fr_value_calc_list_cmp(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_value_box_li /* * Emulate v3. :( */ - fr_dlist_foreach(list1, fr_value_box_t, a) { - fr_dlist_foreach(list2, fr_value_box_t, b) { + fr_value_box_list_foreach(list1, a) { + fr_value_box_list_foreach(list2, b) { rcode = fr_value_calc_binary_op(ctx, dst, FR_TYPE_BOOL, a, op, b); if (rcode < 0) return rcode; diff --git a/src/lib/util/calc.h b/src/lib/util/calc.h index a28fb0c5e42..cc82f7044cf 100644 --- a/src/lib/util/calc.h +++ b/src/lib/util/calc.h @@ -38,9 +38,9 @@ int fr_value_calc_assignment_op(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_token_t int fr_value_calc_unary_op(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_token_t op, fr_value_box_t const *src) CC_HINT(nonnull(1)); -int fr_value_calc_list_op(TALLOC_CTX *ctx, fr_value_box_t *box, fr_token_t op, fr_value_box_list_t const *list); +int fr_value_calc_list_op(TALLOC_CTX *ctx, fr_value_box_t *box, fr_token_t op, FR_DLIST_HEAD(fr_value_box_list) const *list); -int fr_value_calc_list_cmp(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_value_box_list_t const *list1, fr_token_t op, fr_value_box_list_t const *list2) CC_HINT(nonnull); +int fr_value_calc_list_cmp(TALLOC_CTX *ctx, fr_value_box_t *dst, FR_DLIST_HEAD(fr_value_box_list) const *list1, fr_token_t op, FR_DLIST_HEAD(fr_value_box_list) const *list2) CC_HINT(nonnull); #ifdef __cplusplus } diff --git a/src/lib/util/dict_priv.h b/src/lib/util/dict_priv.h index 99f3cfd7ebb..edb543ea78b 100644 --- a/src/lib/util/dict_priv.h +++ b/src/lib/util/dict_priv.h @@ -200,7 +200,7 @@ fr_dict_attr_t *dict_attr_by_name(fr_dict_attr_err_t *err, fr_dict_attr_t const fr_dict_attr_t *dict_attr_child_by_num(fr_dict_attr_t const *parent, unsigned int attr); -ssize_t dict_by_protocol_substr(fr_dict_attr_err_t *err, +fr_slen_t dict_by_protocol_substr(fr_dict_attr_err_t *err, fr_dict_t **out, fr_sbuff_t *name, fr_dict_t const *dict_def); fr_dict_t *dict_by_protocol_name(char const *name); diff --git a/src/lib/util/dlist.h b/src/lib/util/dlist.h index 5033a50a706..86cbb2f6475 100644 --- a/src/lib/util/dlist.h +++ b/src/lib/util/dlist.h @@ -697,15 +697,13 @@ static inline void *fr_dlist_replace(fr_dlist_head_t *list_head, void *item, voi * Does nothing if the list was not initialised with #fr_dlist_talloc_init. */ #ifndef TALLOC_GET_TYPE_ABORT_NOOP -static inline CC_HINT(nonnull) void fr_dlist_verify(NDEBUG_UNUSED char const *file, NDEBUG_UNUSED int line, - fr_dlist_head_t const *list_head) +static inline CC_HINT(nonnull) void _fr_dlist_verify(char const *file, int line, fr_dlist_head_t const *list_head) { void *item; if (!list_head->type) return; - fr_assert_msg(fr_dlist_initialised(list_head), "CONSISTENCY CHECK FAILED %s[%i]: dlist not initialised", - file, line); + fr_assert_msg(fr_dlist_initialised(list_head), "CONSISTENCY CHECK FAILED %s[%i]: dlist not initialised", file, line); for (item = fr_dlist_head(list_head); item; @@ -713,12 +711,13 @@ static inline CC_HINT(nonnull) void fr_dlist_verify(NDEBUG_UNUSED char const *fi item = _talloc_get_type_abort(item, list_head->type, __location__); } } -# define FR_DLIST_VERIFY(_head) fr_dlist_verify(__FILE__, __LINE__, _head) -#elif !defined(NDEBUG) -# define FR_DLIST_VERIFY(_head) fr_assert(_head) #else -# define FR_DLIST_VERIFY(_head) +static inline void _fr_dlist_verify(UNUSED char const *file, UNUSED int line, fr_dlist_head_t const *list_head) +{ + if (!fr_cond_assert(list_head != NULL)) return; +} #endif +#define fr_dlist_verify(_head) _fr_dlist_verify(__FILE__, __LINE__, _head) /** Merge two lists, inserting the source at the tail of the destination * @@ -1108,8 +1107,11 @@ static inline void fr_dlist_noop(void) #define FR_DLIST_FUNCS(_name, _element_type, _element_entry) \ DIAG_OFF(unused-function) \ _Static_assert(IS_FIELD_COMPATIBLE(_element_type, _element_entry, FR_DLIST_ENTRY(_name)) == 1, "Bad dlist entry field type");\ - static inline fr_dlist_head_t *_name ## _list_head(FR_DLIST_HEAD(_name) const *list) \ + static inline fr_dlist_head_t *_name ## _dlist_head(FR_DLIST_HEAD(_name) const *list) \ { return UNCONST(fr_dlist_head_t *, &list->head); } \ +\ + static inline fr_dlist_t *_name ## _dlist_entry(FR_DLIST_ENTRY(_name) const *entry) \ + { return UNCONST(fr_dlist_t *, &entry->entry ); } \ \ static inline void _name ## _entry_init(_element_type *entry) \ { \ @@ -1172,6 +1174,9 @@ DIAG_OFF(unused-function) \ \ static inline _element_type *_name ## _replace(FR_DLIST_HEAD(_name) *list, _element_type *item, _element_type *ptr) \ { return fr_dlist_replace(&list->head, item, ptr); } \ +\ + static inline void _##_name ## _verify(char const *file, int line, FR_DLIST_HEAD(_name) const *list_head) \ + { _fr_dlist_verify(file, line, UNCONST(fr_dlist_head_t *, &list_head->head)); } \ \ static inline int _name ## _move(FR_DLIST_HEAD(_name) *dst, FR_DLIST_HEAD(_name) *src) \ { return fr_dlist_move(&dst->head, &src->head); } \ @@ -1204,6 +1209,16 @@ DIAG_OFF(unused-function) \ { fr_dlist_sort(&list->head, cmp); } \ DIAG_ON(unused-function) +/* + * In addition to the above call to FR_DLIST_FUNCS two additional macros should be defined + * + * Unfortunately as there's no way to dynamically define macro names these need to be done manually. + * + * #define _foreach(_list_head, _iter) fr_dlist_foreach(_dlist_head(_list_head), , _iter) + * #define _foreach_safe(_list_head, _iter) fr_dlist_foreach_safe(_dlist_head(_list_head), , _iter) + * #define _verify(_list_head) __verify(__FILE__, __LINE__, _list_head) + */ + #ifdef __cplusplus } #endif diff --git a/src/lib/util/pair.c b/src/lib/util/pair.c index 09f6cd09364..02514671411 100644 --- a/src/lib/util/pair.c +++ b/src/lib/util/pair.c @@ -2042,14 +2042,14 @@ int fr_pair_list_copy_to_box(fr_value_box_t *dst, fr_pair_list_t *from) value = fr_value_box_alloc(dst, vp->data.type, vp->da, vp->data.tainted); if (!value) { fail: - fr_dlist_talloc_free_to_tail(&dst->vb_group, first_added); + fr_value_box_list_talloc_free_to_tail(&dst->vb_group, first_added); return -1; } fr_value_box_copy(value, value, &vp->data); } if (!first_added) first_added = value; - fr_dlist_insert_tail(&dst->vb_group, value); + fr_value_box_list_insert_tail(&dst->vb_group, value); } return cnt; diff --git a/src/lib/util/print.c b/src/lib/util/print.c index 2a0498a143f..78404f45bfd 100644 --- a/src/lib/util/print.c +++ b/src/lib/util/print.c @@ -770,7 +770,7 @@ char *fr_vasprintf(TALLOC_CTX *ctx, char const *fmt, va_list ap) case 'M': { - fr_value_box_list_t const *in = va_arg(ap_q, fr_value_box_list_t const *); + FR_DLIST_HEAD(fr_value_box_list) const *in = va_arg(ap_q, FR_DLIST_HEAD(fr_value_box_list) const *); if (!in) { subst = talloc_strdup(NULL, "(null)"); diff --git a/src/lib/util/uri.c b/src/lib/util/uri.c index 7ed1df776e5..3a711586fbf 100644 --- a/src/lib/util/uri.c +++ b/src/lib/util/uri.c @@ -38,9 +38,8 @@ RCSID("$Id$") * - 0 on success * - -1 on failure */ -int fr_uri_escape(fr_value_box_list_t *uri, fr_uri_part_t const *uri_parts, void *uctx) +int fr_uri_escape(FR_DLIST_HEAD(fr_value_box_list) *uri, fr_uri_part_t const *uri_parts, void *uctx) { - fr_value_box_t *uri_vb = NULL; fr_uri_part_t const *uri_part; fr_sbuff_t sbuff; @@ -48,7 +47,7 @@ int fr_uri_escape(fr_value_box_list_t *uri, fr_uri_part_t const *uri_parts, void fr_strerror_clear(); - while ((uri_vb = fr_dlist_next(uri, uri_vb))){ + fr_value_box_list_foreach_safe(uri, uri_vb) { if (uri_vb->tainted && !uri_part->tainted_allowed) { fr_strerror_printf_push("Tainted value not allowed for %s", uri_part->name); return -1; @@ -64,12 +63,12 @@ int fr_uri_escape(fr_value_box_list_t *uri, fr_uri_part_t const *uri_parts, void * so remove it from the list and re-insert after the escaping * has been done */ - fr_value_box_t *prev = fr_dlist_remove(uri, uri_vb); + fr_value_box_t *prev = fr_value_box_list_remove(uri, uri_vb); if (uri_part->func(uri_vb, uctx) < 0) { fr_strerror_printf_push("Unable to escape tainted input %pV", uri_vb); return -1; } - fr_dlist_insert_after(uri, prev, uri_vb); + fr_value_box_list_insert_after(uri, prev, uri_vb); } continue; } @@ -108,7 +107,7 @@ int fr_uri_escape(fr_value_box_list_t *uri, fr_uri_part_t const *uri_parts, void uri_part += uri_part->part_adv[fr_sbuff_char(&sbuff, '\0')]; if (!uri_part->terminals) break; } while (fr_sbuff_advance(&sbuff, 1) > 0); - } + }} return 0; } diff --git a/src/lib/util/uri.h b/src/lib/util/uri.h index e634d87cb71..20b60150af9 100644 --- a/src/lib/util/uri.h +++ b/src/lib/util/uri.h @@ -55,7 +55,7 @@ typedef struct { #define XLAT_URI_PART_TERMINATOR { .name = NULL, .terminals = NULL, .tainted_allowed = false, .func = NULL } -int fr_uri_escape(fr_value_box_list_t *uri, fr_uri_part_t const *uri_parts, void *uctx); +int fr_uri_escape(FR_DLIST_HEAD(fr_value_box_list) *uri, fr_uri_part_t const *uri_parts, void *uctx); #ifdef __cplusplus } diff --git a/src/lib/util/value.c b/src/lib/util/value.c index df2f1e18064..85943383237 100644 --- a/src/lib/util/value.c +++ b/src/lib/util/value.c @@ -603,7 +603,7 @@ static inline void fr_value_box_copy_meta(fr_value_box_t *dst, fr_value_box_t co dst->type = src->type; dst->tainted = src->tainted; dst->safe = src->safe; - fr_dlist_entry_init(&dst->entry); + fr_value_box_list_entry_init(dst); } /** Compare two values @@ -2097,7 +2097,7 @@ static inline int fr_value_box_cast_to_strvalue(TALLOC_CTX *ctx, fr_value_box_t case FR_TYPE_GROUP: return fr_value_box_list_concat_in_place(ctx, - dst, UNCONST(fr_value_box_list_t *, &src->vb_group), + dst, UNCONST(FR_DLIST_HEAD(fr_value_box_list) *, &src->vb_group), FR_TYPE_STRING, FR_VALUE_BOX_LIST_NONE, false, SIZE_MAX); @@ -2146,7 +2146,7 @@ static inline int fr_value_box_cast_to_octets(TALLOC_CTX *ctx, fr_value_box_t *d case FR_TYPE_GROUP: return fr_value_box_list_concat_in_place(ctx, - dst, UNCONST(fr_value_box_list_t *, &src->vb_group), + dst, UNCONST(FR_DLIST_HEAD(fr_value_box_list) *, &src->vb_group), FR_TYPE_OCTETS, FR_VALUE_BOX_LIST_NONE, false, SIZE_MAX); @@ -3356,7 +3356,7 @@ int fr_value_box_cast_in_place(TALLOC_CTX *ctx, fr_value_box_t *vb, /* * Store list poiters to restore later - fr_value_box_cast clears them */ - fr_dlist_t entry = vb->entry; + FR_DLIST_ENTRY(fr_value_box_list) entry = vb->entry; /* * Simple case, destination type and current @@ -3381,8 +3381,7 @@ int fr_value_box_cast_in_place(TALLOC_CTX *ctx, fr_value_box_t *vb, * box is left in a consistent state. */ fr_value_box_copy_shallow(NULL, vb, &tmp); - vb->entry.next = entry.next; - vb->entry.prev = entry.prev; + vb->entry = entry; return -1; } fr_value_box_clear(&tmp); /* Clear out any old buffers */ @@ -3390,8 +3389,7 @@ int fr_value_box_cast_in_place(TALLOC_CTX *ctx, fr_value_box_t *vb, /* * Restore list pointers */ - vb->entry.next = entry.next; - vb->entry.prev = entry.prev; + vb->entry = entry; return 0; } @@ -3478,7 +3476,7 @@ void fr_value_box_clear_value(fr_value_box_t *data) { fr_value_box_t *vb = NULL; - while ((vb = fr_dlist_next(&data->vb_group, vb))) { + while ((vb = fr_value_box_list_next(&data->vb_group, vb))) { fr_value_box_clear_value(vb); talloc_free(vb); } @@ -3572,7 +3570,7 @@ int fr_value_box_copy(TALLOC_CTX *ctx, fr_value_box_t *dst, const fr_value_box_t fr_value_box_copy_meta(dst, src); /* Initialises group child dlist */ - while ((child = fr_dlist_next(&src->vb_group, child))) { + while ((child = fr_value_box_list_next(&src->vb_group, child))) { fr_value_box_t *new; /* @@ -3582,7 +3580,7 @@ int fr_value_box_copy(TALLOC_CTX *ctx, fr_value_box_t *dst, const fr_value_box_t if (unlikely(!new)) { group_error: fr_strerror_const("Failed duplicating group child"); - fr_dlist_talloc_free(&dst->vb_group); + fr_value_box_list_talloc_free(&dst->vb_group); return -1; } @@ -3592,7 +3590,7 @@ int fr_value_box_copy(TALLOC_CTX *ctx, fr_value_box_t *dst, const fr_value_box_t * child. */ if (unlikely(fr_value_box_copy(new, new, child) < 0)) goto group_error; - fr_dlist_insert_tail(&dst->vb_group, new); + fr_value_box_list_insert_tail(&dst->vb_group, new); } } break; @@ -3681,13 +3679,13 @@ int fr_value_box_steal(TALLOC_CTX *ctx, fr_value_box_t *dst, fr_value_box_t *src { fr_value_box_t *child; - while ((child = fr_dlist_pop_head(&src->vb_group))) { + while ((child = fr_value_box_list_pop_head(&src->vb_group))) { child = talloc_steal(ctx, child); if (unlikely(!child)) { fr_strerror_const("Failed stealing child"); return -1; } - fr_dlist_insert_tail(&dst->vb_group, child); + fr_value_box_list_insert_tail(&dst->vb_group, child); } } return 0; @@ -5041,7 +5039,7 @@ finish: * Fixup enumvs */ dst->enumv = dst_enumv; - fr_dlist_entry_init(&dst->entry); + fr_value_box_list_entry_init(dst); FR_SBUFF_SET_RETURN(in, &our_in); } @@ -5233,7 +5231,7 @@ ssize_t fr_value_box_print(fr_sbuff_t *out, fr_value_box_t const *data, fr_sbuff */ FR_SBUFF_IN_CHAR_RETURN(&our_out, '{'); FR_SBUFF_RETURN(fr_value_box_list_concat_as_string, - NULL, &our_out, UNCONST(fr_value_box_list_t *, &data->vb_group), + NULL, &our_out, UNCONST(FR_DLIST_HEAD(fr_value_box_list) *, &data->vb_group), ", ", (sizeof(", ") - 1), e_rules, 0, false, true); FR_SBUFF_IN_CHAR_RETURN(&our_out, '}'); @@ -5311,16 +5309,16 @@ ssize_t fr_value_box_print_quoted(fr_sbuff_t *out, fr_value_box_t const *data, f * - <0 how many additional bytes we would have needed to * concat the next box. */ -ssize_t fr_value_box_list_concat_as_string(bool *tainted, fr_sbuff_t *sbuff, fr_value_box_list_t *list, +ssize_t fr_value_box_list_concat_as_string(bool *tainted, fr_sbuff_t *sbuff, FR_DLIST_HEAD(fr_value_box_list) *list, char const *sep, size_t sep_len, fr_sbuff_escape_rules_t const *e_rules, fr_value_box_list_action_t proc_action, bool flatten, bool printable) { fr_sbuff_t our_sbuff = FR_SBUFF(sbuff); ssize_t slen; - if (fr_dlist_empty(list)) return 0; + if (fr_value_box_list_empty(list)) return 0; - fr_dlist_foreach(list, fr_value_box_t, vb) { + fr_value_box_list_foreach(list, vb) { switch (vb->type) { case FR_TYPE_GROUP: if (!flatten) goto print; @@ -5358,7 +5356,7 @@ ssize_t fr_value_box_list_concat_as_string(bool *tainted, fr_sbuff_t *sbuff, fr_ return slen; } - if (sep && fr_dlist_next(list, vb)) { + if (sep && fr_value_box_list_next(list, vb)) { slen = fr_sbuff_in_bstrncpy(&our_sbuff, sep, sep_len); if (slen < 0) goto error; } @@ -5369,10 +5367,10 @@ ssize_t fr_value_box_list_concat_as_string(bool *tainted, fr_sbuff_t *sbuff, fr_ * an issue concating them, everything * is still in a known state. */ - fr_dlist_foreach_safe(list, fr_value_box_t, vb) { + fr_value_box_list_foreach_safe(list, vb) { if (tainted && vb->tainted) *tainted = true; - if (vb_should_remove(proc_action)) fr_dlist_remove(list, vb); + if (vb_should_remove(proc_action)) fr_value_box_list_remove(list, vb); if (vb_should_free_value(proc_action)) fr_value_box_clear(vb); if (vb_should_free(proc_action)) talloc_free(vb); }} @@ -5400,7 +5398,7 @@ ssize_t fr_value_box_list_concat_as_string(bool *tainted, fr_sbuff_t *sbuff, fr_ * - <0 how many additional bytes we would have needed to * concat the next box. */ -ssize_t fr_value_box_list_concat_as_octets(bool *tainted, fr_dbuff_t *dbuff, fr_value_box_list_t *list, +ssize_t fr_value_box_list_concat_as_octets(bool *tainted, fr_dbuff_t *dbuff, FR_DLIST_HEAD(fr_value_box_list) *list, uint8_t const *sep, size_t sep_len, fr_value_box_list_action_t proc_action, bool flatten) { @@ -5408,9 +5406,9 @@ ssize_t fr_value_box_list_concat_as_octets(bool *tainted, fr_dbuff_t *dbuff, fr_ TALLOC_CTX *tmp_ctx = NULL; ssize_t slen; - if (fr_dlist_empty(list)) return 0; + if (fr_value_box_list_empty(list)) return 0; - fr_dlist_foreach(list, fr_value_box_t, vb) { + fr_value_box_list_foreach(list, vb) { switch (vb->type) { case FR_TYPE_GROUP: if (!flatten) goto cast; @@ -5453,7 +5451,7 @@ ssize_t fr_value_box_list_concat_as_octets(bool *tainted, fr_dbuff_t *dbuff, fr_ return slen; } - if (sep && fr_dlist_next(list, vb)) { + if (sep && fr_value_box_list_next(list, vb)) { slen = fr_dbuff_in_memcpy(&our_dbuff, sep, sep_len); if (slen < 0) goto error; } @@ -5466,10 +5464,10 @@ ssize_t fr_value_box_list_concat_as_octets(bool *tainted, fr_dbuff_t *dbuff, fr_ * an issue concating them, everything * is still in a known state. */ - fr_dlist_foreach_safe(list, fr_value_box_t, vb) { + fr_value_box_list_foreach_safe(list, vb) { if (tainted && vb->tainted) *tainted = true; - if (vb_should_remove(proc_action)) fr_dlist_remove(list, vb); + if (vb_should_remove(proc_action)) fr_value_box_list_remove(list, vb); if (vb_should_free_value(proc_action)) fr_value_box_clear(vb); if (vb_should_free(proc_action)) talloc_free(vb); }} @@ -5497,22 +5495,22 @@ ssize_t fr_value_box_list_concat_as_octets(bool *tainted, fr_dbuff_t *dbuff, fr_ * - -1 on failure. */ int fr_value_box_list_concat_in_place(TALLOC_CTX *ctx, - fr_value_box_t *out, fr_value_box_list_t *list, fr_type_t type, + fr_value_box_t *out, FR_DLIST_HEAD(fr_value_box_list) *list, fr_type_t type, fr_value_box_list_action_t proc_action, bool flatten, size_t max_size) { - fr_dbuff_t dbuff; /* FR_TYPE_OCTETS */ - fr_dbuff_uctx_talloc_t dbuff_tctx; + fr_dbuff_t dbuff; /* FR_TYPE_OCTETS */ + fr_dbuff_uctx_talloc_t dbuff_tctx; - fr_sbuff_t sbuff; /* FR_TYPE_STRING */ - fr_sbuff_uctx_talloc_t sbuff_tctx; + fr_sbuff_t sbuff; /* FR_TYPE_STRING */ + fr_sbuff_uctx_talloc_t sbuff_tctx; - fr_value_box_t *head_vb = fr_dlist_head(list); - bool tainted = false; + fr_value_box_t *head_vb = fr_value_box_list_head(list); + bool tainted = false; - fr_dlist_t entry; + FR_DLIST_ENTRY(fr_value_box_list) entry; - if (fr_dlist_empty(list)) { + if (fr_value_box_list_empty(list)) { fr_strerror_const("Invalid arguments. List contains no elements"); return -1; } @@ -5580,7 +5578,7 @@ int fr_value_box_list_concat_in_place(TALLOC_CTX *ctx, if (fr_value_box_list_concat_as_string(&tainted, &sbuff, list, NULL, 0, NULL, proc_action, flatten, true) < 0) { - fr_dlist_insert_head(list, head_vb); + fr_value_box_list_insert_head(list, head_vb); goto error; } (void)fr_sbuff_trim_talloc(&sbuff, SIZE_MAX); @@ -5596,7 +5594,7 @@ int fr_value_box_list_concat_in_place(TALLOC_CTX *ctx, if (fr_value_box_list_concat_as_octets(&tainted, &dbuff, list, NULL, 0, proc_action, flatten) < 0) { - fr_dlist_insert_head(list, head_vb); + fr_value_box_list_insert_head(list, head_vb); goto error; } (void)fr_dbuff_trim_talloc(&dbuff, SIZE_MAX); @@ -5607,7 +5605,7 @@ int fr_value_box_list_concat_in_place(TALLOC_CTX *ctx, default: break; } - fr_dlist_insert_head(list, out); + fr_value_box_list_insert_head(list, out); /* * Merge all the boxes in the list into * a single contiguous buffer. @@ -5658,10 +5656,10 @@ int fr_value_box_list_concat_in_place(TALLOC_CTX *ctx, * - NULL on error. * - The concatenation of the string values of the value box list on success. */ -char *fr_value_box_list_aprint(TALLOC_CTX *ctx, fr_value_box_list_t const *list, char const *delim, +char *fr_value_box_list_aprint(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) const *list, char const *delim, fr_sbuff_escape_rules_t const *e_rules) { - fr_value_box_t const *vb = fr_dlist_head(list); + fr_value_box_t const *vb = fr_value_box_list_head(list); char *aggr, *td = NULL; TALLOC_CTX *pool = NULL; @@ -5669,7 +5667,7 @@ char *fr_value_box_list_aprint(TALLOC_CTX *ctx, fr_value_box_list_t const *list, fr_value_box_aprint(ctx, &aggr, vb, e_rules); if (!aggr) return NULL; - if (!fr_dlist_next(list, vb)) return aggr; + if (!fr_value_box_list_next(list, vb)) return aggr; /* * If we're aggregating more values, @@ -5678,7 +5676,7 @@ char *fr_value_box_list_aprint(TALLOC_CTX *ctx, fr_value_box_list_t const *list, pool = talloc_pool(NULL, 255); if (delim) td = talloc_typed_strdup(pool, delim); - while ((vb = fr_dlist_next(list, vb))) { + while ((vb = fr_value_box_list_next(list, vb))) { char *str, *new_aggr; fr_value_box_aprint(pool, &str, vb, e_rules); @@ -5730,22 +5728,22 @@ uint32_t fr_value_box_hash(fr_value_box_t const *vb) * - A duplicate list of value boxes, allocated in the context of 'ctx' * - NULL on error, or empty input list. */ -int fr_value_box_list_acopy(TALLOC_CTX *ctx, fr_value_box_list_t *out, fr_value_box_list_t const *in) +int fr_value_box_list_acopy(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, FR_DLIST_HEAD(fr_value_box_list) const *in) { fr_value_box_t const *in_p = NULL; - while ((in_p = fr_dlist_next(in, in_p))) { + while ((in_p = fr_value_box_list_next(in, in_p))) { fr_value_box_t *n = NULL; n = fr_value_box_alloc_null(ctx); if (!n) { error: - fr_dlist_talloc_free(out); + fr_value_box_list_talloc_free(out); return -1; } if (fr_value_box_copy(n, n, in_p) < 0) goto error; - fr_dlist_insert_tail(out, n); + fr_dlist_insert_tail(fr_value_box_list_dlist_head(out), n); } return 0; @@ -5758,11 +5756,11 @@ int fr_value_box_list_acopy(TALLOC_CTX *ctx, fr_value_box_list_t *out, fr_value_ * - true if a list member is tainted. * - false if no list members are tainted. */ -bool fr_value_box_list_tainted(fr_value_box_list_t const *head) +bool fr_value_box_list_tainted(FR_DLIST_HEAD(fr_value_box_list) const *head) { fr_value_box_t *vb = NULL; - while ((vb = fr_dlist_next(head, vb))) { + while ((vb = fr_value_box_list_next(head, vb))) { if (fr_type_is_group(vb->type) && fr_value_box_list_tainted(&vb->vb_group)) return true; if (vb->tainted) return true; } @@ -5774,11 +5772,11 @@ bool fr_value_box_list_tainted(fr_value_box_list_t const *head) * * @param[in] head of list. */ -void fr_value_box_list_taint(fr_value_box_list_t *head) +void fr_value_box_list_taint(FR_DLIST_HEAD(fr_value_box_list) *head) { fr_value_box_t *vb = NULL; - while ((vb = fr_dlist_next(head, vb))) { + while ((vb = fr_value_box_list_next(head, vb))) { if (fr_type_is_group(vb->type)) fr_value_box_list_taint(&vb->vb_group); vb->tainted = true; } @@ -5788,11 +5786,11 @@ void fr_value_box_list_taint(fr_value_box_list_t *head) * * @param[in] head of list. */ -void fr_value_box_list_untaint(fr_value_box_list_t *head) +void fr_value_box_list_untaint(FR_DLIST_HEAD(fr_value_box_list) *head) { fr_value_box_t *vb = NULL; - while ((vb = fr_dlist_next(head, vb))) { + while ((vb = fr_value_box_list_next(head, vb))) { if (fr_type_is_group(vb->type)) fr_value_box_list_untaint(&vb->vb_group); vb->tainted = false; } @@ -5842,11 +5840,11 @@ DIAG_ON(nonnull-compare) } } -void value_box_list_verify(char const *file, int line, fr_value_box_list_t const *list, bool talloced) +void value_box_list_verify(char const *file, int line, FR_DLIST_HEAD(fr_value_box_list) const *list, bool talloced) { fr_value_box_t const *vb = NULL; - while ((vb = fr_dlist_next(list, vb))) value_box_verify(file, line, vb, talloced); + while ((vb = fr_value_box_list_next(list, vb))) value_box_verify(file, line, vb, talloced); } @@ -5899,7 +5897,7 @@ bool fr_value_box_is_truthy(fr_value_box_t const *in) return false; case FR_TYPE_STRUCTURAL: - if (in->type == FR_TYPE_GROUP) return (fr_value_box_list_len(&in->vb_group) > 0); + if (in->type == FR_TYPE_GROUP) return (fr_value_box_list_num_elements(&in->vb_group) > 0); return false; case FR_TYPE_BOOL: diff --git a/src/lib/util/value.h b/src/lib/util/value.h index 413a523e40c..47e973b9e6c 100644 --- a/src/lib/util/value.h +++ b/src/lib/util/value.h @@ -85,11 +85,7 @@ extern fr_sbuff_escape_rules_t *fr_value_escape_by_char[UINT8_MAX + 1]; extern fr_sbuff_escape_rules_t fr_value_escape_unprintables; -/** Lists of value boxes - * - * Specifically define a type for lists of value_box_t to aid type checking - */ -typedef fr_dlist_head_t fr_value_box_list_t; +FR_DLIST_TYPES(fr_value_box_list) /** Union containing all data types supported by the server * @@ -99,61 +95,67 @@ typedef fr_dlist_head_t fr_value_box_list_t; * fr_type_t should be an enumeration of the values in this union. */ struct value_box_s { - fr_type_t _CONST type; //!< Type of this value-box, at the start, see pair.h + fr_type_t _CONST type; //!< Type of this value-box, at the start, see pair.h union { /* * Variable length values */ - char const * _CONST strvalue; //!< Pointer to UTF-8 string. - uint8_t const * _CONST octets; //!< Pointer to binary string. - void * _CONST ptr; //!< generic pointer. + char const * _CONST strvalue; //!< Pointer to UTF-8 string. + uint8_t const * _CONST octets; //!< Pointer to binary string. + void * _CONST ptr; //!< generic pointer. /* * Fixed length values */ - fr_ipaddr_t ip; //!< IPv4/6 address/prefix. + fr_ipaddr_t ip; //!< IPv4/6 address/prefix. - fr_ifid_t ifid; //!< IPv6 interface ID. - fr_ethernet_t ether; //!< Ethernet (MAC) address. + fr_ifid_t ifid; //!< IPv6 interface ID. + fr_ethernet_t ether; //!< Ethernet (MAC) address. - bool boolean; //!< A truth value. + bool boolean; //!< A truth value. - uint8_t uint8; //!< 8bit unsigned integer. - uint16_t uint16; //!< 16bit unsigned integer. - uint32_t uint32; //!< 32bit unsigned integer. - uint64_t uint64; //!< 64bit unsigned integer. - uint128_t uint128; //!< 128bit unsigned integer. + uint8_t uint8; //!< 8bit unsigned integer. + uint16_t uint16; //!< 16bit unsigned integer. + uint32_t uint32; //!< 32bit unsigned integer. + uint64_t uint64; //!< 64bit unsigned integer. + uint128_t uint128; //!< 128bit unsigned integer. - int8_t int8; //!< 8bit signed integer. - int16_t int16; //!< 16bit signed integer. - int32_t int32; //!< 32bit signed integer. - int64_t int64; //!< 64bit signed integer; + int8_t int8; //!< 8bit signed integer. + int16_t int16; //!< 16bit signed integer. + int32_t int32; //!< 32bit signed integer. + int64_t int64; //!< 64bit signed integer; - float float32; //!< Single precision float. - double float64; //!< Double precision float. + float float32; //!< Single precision float. + double float64; //!< Double precision float. - fr_unix_time_t date; //!< Date internal format in nanoseconds + fr_unix_time_t date; //!< Date internal format in nanoseconds /* * System specific - Used for runtime configuration only. */ - size_t size; //!< System specific file/memory size. - fr_time_delta_t time_delta; //!< a delta time in nanoseconds + size_t size; //!< System specific file/memory size. + fr_time_delta_t time_delta; //!< a delta time in nanoseconds - fr_value_box_list_t children; //!< for groups + FR_DLIST_HEAD(fr_value_box_list) children; //!< for groups } datum; - size_t length; + size_t length; - bool tainted; //!< i.e. did it come from an untrusted source - uint16_t _CONST safe; //!< more detailed safety + bool tainted; //!< i.e. did it come from an untrusted source + uint16_t _CONST safe; //!< more detailed safety - fr_dict_attr_t const *enumv; //!< Enumeration values. + fr_dict_attr_t const *enumv; //!< Enumeration values. - fr_dlist_t entry; //!< Doubly linked list entry. + FR_DLIST_ENTRY(fr_value_box_list) entry; //!< Doubly linked list entry. }; +FR_DLIST_FUNCS(fr_value_box_list, fr_value_box_t, entry) + +#define fr_value_box_list_foreach(_list_head, _iter) fr_dlist_foreach(fr_value_box_list_dlist_head(_list_head), fr_value_box_t, _iter) +#define fr_value_box_list_foreach_safe(_list_head, _iter) fr_dlist_foreach_safe(fr_value_box_list_dlist_head(_list_head), fr_value_box_t, _iter) +#define fr_value_box_list_verify(_list_head) _fr_value_box_list_verify(__FILE__, __LINE__, _list_head) + /** Actions to perform when we process a box in a list * */ @@ -376,17 +378,6 @@ extern fr_sbuff_parse_rules_t const *value_parse_rules_quoted_char[UINT8_MAX]; */ #define fr_value_box_foreach(_v, _iv) for (fr_value_box_t *_iv = fr_dlist_head(_v); _iv; _iv = fr_dlist_next(_v, _iv)) -/** Returns the number of boxes in a list of value boxes - * - * @param[in] list of value boxes. - * @return Number of boxes in the list. - */ -static inline CC_HINT(nonnull) -size_t fr_value_box_list_len(fr_value_box_list_t const *list) -{ - return fr_dlist_num_elements(list); -} - /** Determines whether a list contains the number of boxes required * * @param[in] list of value boxes. @@ -396,24 +387,13 @@ size_t fr_value_box_list_len(fr_value_box_list_t const *list) * - false if the list has fewer than min boxes. */ static inline CC_HINT(nonnull) -bool fr_value_box_list_len_min(fr_value_box_list_t const *list, unsigned int min) +bool fr_value_box_list_len_min(FR_DLIST_HEAD(fr_value_box_list) const *list, unsigned int min) { - unsigned int i = fr_dlist_num_elements(list); + unsigned int i = fr_value_box_list_num_elements(list); return (i >= min); } -/** Initialise a list of fr_value_box_t - * - * @param[in,out] list to initialise - */ -static inline CC_HINT(nonnull) -void fr_value_box_list_init(fr_value_box_list_t *list) -{ - fr_dlist_init(list, fr_value_box_t, entry); /* Not always talloced */ -} -/** @} */ - /** @name Box to box copying * * @{ @@ -471,7 +451,7 @@ void fr_value_box_init(fr_value_box_t *vb, fr_type_t type, fr_dict_attr_t const .enumv = enumv, .tainted = tainted }); - fr_dlist_entry_init(&vb->entry); + fr_value_box_list_entry_init(vb); /* * The majority of types are fine to initialise to @@ -1020,36 +1000,36 @@ ssize_t fr_value_box_from_str(TALLOC_CTX *ctx, fr_value_box_t *dst, * * @{ */ -ssize_t fr_value_box_list_concat_as_string(bool *tainted, fr_sbuff_t *sbuff, fr_value_box_list_t *list, - char const *sep, size_t sep_len, fr_sbuff_escape_rules_t const *e_rules, - fr_value_box_list_action_t proc_action, bool flatten, bool printable) +ssize_t fr_value_box_list_concat_as_string(bool *tainted, fr_sbuff_t *sbuff, FR_DLIST_HEAD(fr_value_box_list) *list, + char const *sep, size_t sep_len, fr_sbuff_escape_rules_t const *e_rules, + fr_value_box_list_action_t proc_action, bool flatten, bool printable) CC_HINT(nonnull(2,3)); -ssize_t fr_value_box_list_concat_as_octets(bool *tainted, fr_dbuff_t *dbuff, fr_value_box_list_t *list, +ssize_t fr_value_box_list_concat_as_octets(bool *tainted, fr_dbuff_t *dbuff, FR_DLIST_HEAD(fr_value_box_list) *list, uint8_t const *sep, size_t sep_len, fr_value_box_list_action_t proc_action, bool flatten) CC_HINT(nonnull(2,3)); int fr_value_box_list_concat_in_place(TALLOC_CTX *ctx, - fr_value_box_t *out, fr_value_box_list_t *list, fr_type_t type, + fr_value_box_t *out, FR_DLIST_HEAD(fr_value_box_list) *list, fr_type_t type, fr_value_box_list_action_t proc_action, bool flatten, size_t max_size) CC_HINT(nonnull(2,3)); -char *fr_value_box_list_aprint(TALLOC_CTX *ctx, fr_value_box_list_t const *list, char const *delim, +char *fr_value_box_list_aprint(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) const *list, char const *delim, fr_sbuff_escape_rules_t const *e_rules) CC_HINT(nonnull(2)); -int fr_value_box_list_acopy(TALLOC_CTX *ctx, fr_value_box_list_t *out, fr_value_box_list_t const *in) +int fr_value_box_list_acopy(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *out, FR_DLIST_HEAD(fr_value_box_list) const *in) CC_HINT(nonnull(2,3)); -bool fr_value_box_list_tainted(fr_value_box_list_t const *head) +bool fr_value_box_list_tainted(FR_DLIST_HEAD(fr_value_box_list) const *head) CC_HINT(nonnull(1)); -void fr_value_box_list_taint(fr_value_box_list_t *head) +void fr_value_box_list_taint(FR_DLIST_HEAD(fr_value_box_list) *head) CC_HINT(nonnull(1)); -void fr_value_box_list_untaint(fr_value_box_list_t *head) +void fr_value_box_list_untaint(FR_DLIST_HEAD(fr_value_box_list) *head) CC_HINT(nonnull(1)); /** @} */ @@ -1084,7 +1064,7 @@ uint32_t fr_value_box_hash(fr_value_box_t const *vb); void value_box_verify(char const *file, int line, fr_value_box_t const *vb, bool talloced) CC_HINT(nonnull(3)); -void value_box_list_verify(char const *file, int line, fr_value_box_list_t const *list, bool talloced) +void value_box_list_verify(char const *file, int line, FR_DLIST_HEAD(fr_value_box_list) const *list, bool talloced) CC_HINT(nonnull(3)); #ifdef WITH_VERIFY_PTR diff --git a/src/modules/rlm_always/rlm_always.c b/src/modules/rlm_always/rlm_always.c index 1423fa9da35..174f200045b 100644 --- a/src/modules/rlm_always/rlm_always.c +++ b/src/modules/rlm_always/rlm_always.c @@ -65,14 +65,14 @@ static xlat_arg_parser_t const always_xlat_args[] = { */ static xlat_action_t always_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_always_t *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_always_t); module_instance_t *mi = inst->mi; char const *status; char const *p; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); /* * Expand to the existing status diff --git a/src/modules/rlm_cache/rlm_cache.c b/src/modules/rlm_cache/rlm_cache.c index 61ecd5229a0..13fda853e0f 100644 --- a/src/modules/rlm_cache/rlm_cache.c +++ b/src/modules/rlm_cache/rlm_cache.c @@ -817,7 +817,7 @@ static xlat_arg_parser_t const cache_xlat_args[] = { static CC_HINT(nonnull) xlat_action_t cache_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_cache_entry_t *c = NULL; rlm_cache_t *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_cache_t); @@ -825,7 +825,7 @@ xlat_action_t cache_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, ssize_t slen; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); uint8_t buffer[1024]; uint8_t const *key; ssize_t key_len; diff --git a/src/modules/rlm_chap/rlm_chap.c b/src/modules/rlm_chap/rlm_chap.c index d4dc20dd499..0f5922a9ae5 100644 --- a/src/modules/rlm_chap/rlm_chap.c +++ b/src/modules/rlm_chap/rlm_chap.c @@ -78,13 +78,13 @@ static xlat_arg_parser_t const xlat_func_chap_password_args[] = { */ static xlat_action_t xlat_func_chap_password(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { uint8_t chap_password[1 + RADIUS_CHAP_CHALLENGE_LENGTH]; fr_value_box_t *vb; fr_pair_t *challenge; uint8_t const *vector; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); /* * Use Chap-Challenge pair if present, diff --git a/src/modules/rlm_cipher/rlm_cipher.c b/src/modules/rlm_cipher/rlm_cipher.c index c48f3ec5e47..36ba17d574a 100644 --- a/src/modules/rlm_cipher/rlm_cipher.c +++ b/src/modules/rlm_cipher/rlm_cipher.c @@ -583,7 +583,7 @@ static xlat_arg_parser_t const cipher_rsa_encrypt_xlat_arg = { */ static xlat_action_t cipher_rsa_encrypt_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_cipher_rsa_thread_inst_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_cipher_rsa_thread_inst_t); @@ -594,7 +594,7 @@ static xlat_action_t cipher_rsa_encrypt_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, size_t ciphertext_len; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); plaintext = in_head->vb_strvalue; plaintext_len = in_head->vb_length; @@ -645,7 +645,7 @@ static xlat_arg_parser_t const cipher_rsa_sign_xlat_arg = { */ static xlat_action_t cipher_rsa_sign_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_cipher_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_cipher_t); rlm_cipher_rsa_thread_inst_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_cipher_rsa_thread_inst_t); @@ -659,7 +659,7 @@ static xlat_action_t cipher_rsa_sign_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, unsigned int digest_len = 0; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); msg = in_head->vb_strvalue; msg_len = in_head->vb_length; @@ -724,7 +724,7 @@ static xlat_arg_parser_t const cipher_rsa_decrypt_xlat_arg = { */ static xlat_action_t cipher_rsa_decrypt_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_cipher_rsa_thread_inst_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_cipher_rsa_thread_inst_t); @@ -735,7 +735,7 @@ static xlat_action_t cipher_rsa_decrypt_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, size_t plaintext_len; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); ciphertext = in_head->vb_octets; ciphertext_len = in_head->vb_length; @@ -787,7 +787,7 @@ static xlat_arg_parser_t const cipher_rsa_verify_xlat_arg[] = { */ static xlat_action_t cipher_rsa_verify_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_cipher_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_cipher_t); rlm_cipher_rsa_thread_inst_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_cipher_rsa_thread_inst_t); @@ -801,7 +801,7 @@ static xlat_action_t cipher_rsa_verify_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, unsigned int digest_len = 0; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_pop_head(in); + fr_value_box_t *in_head = fr_value_box_list_pop_head(in); fr_value_box_t *args; /* @@ -822,7 +822,7 @@ static xlat_action_t cipher_rsa_verify_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, /* * Concat (...) args to get message data */ - args = fr_dlist_head(in); + args = fr_value_box_list_head(in); if (fr_value_box_list_concat_in_place(ctx, args, in, FR_TYPE_STRING, FR_VALUE_BOX_LIST_FREE, true, @@ -899,7 +899,7 @@ static xlat_arg_parser_t const cipher_certificate_xlat_args[] = { */ static xlat_action_t cipher_fingerprint_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_cipher_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_cipher_t); char const *md_name; @@ -908,7 +908,7 @@ static xlat_action_t cipher_fingerprint_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_value_box_t *vb; uint8_t *digest; - if (!fr_dlist_next(in, fr_dlist_head(in))) { + if (!fr_value_box_list_next(in, fr_value_box_list_head(in))) { REDEBUG("Missing digest argument"); return XLAT_ACTION_FAIL; } @@ -916,7 +916,7 @@ static xlat_action_t cipher_fingerprint_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, /* * Second arg... */ - md_name = ((fr_value_box_t *)fr_dlist_next(in, fr_dlist_head(in)))->vb_strvalue; + md_name = ((fr_value_box_t *)fr_value_box_list_next(in, fr_value_box_list_head(in)))->vb_strvalue; md = EVP_get_digestbyname(md_name); if (!md) { REDEBUG("Specified digest \"%s\" is not a valid digest type", md_name); @@ -948,7 +948,7 @@ static xlat_action_t cipher_fingerprint_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t cipher_serial_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_cipher_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_cipher_t); ASN1_INTEGER const *serial; @@ -970,10 +970,10 @@ static xlat_action_t cipher_serial_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, static xlat_action_t cipher_certificate_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_cipher_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_cipher_t); - char const *attribute = ((fr_value_box_t *)fr_dlist_head(in))->vb_strvalue; + char const *attribute = fr_value_box_list_head(in)->vb_strvalue; fr_value_box_t *vb; switch (fr_table_value_by_str(cert_attributes, attribute, CIPHER_CERT_ATTR_UNKNOWN)) { diff --git a/src/modules/rlm_client/rlm_client.c b/src/modules/rlm_client/rlm_client.c index ad0362bb386..20a800ccd45 100644 --- a/src/modules/rlm_client/rlm_client.c +++ b/src/modules/rlm_client/rlm_client.c @@ -115,17 +115,17 @@ static int _map_proc_client_get_vp(TALLOC_CTX *ctx, fr_pair_list_t *out, request * - #RLM_MODULE_FAIL if an error occurred. */ static rlm_rcode_t map_proc_client(UNUSED void *mod_inst, UNUSED void *proc_inst, request_t *request, - fr_value_box_list_t *client_override, map_list_t const *maps) + FR_DLIST_HEAD(fr_value_box_list) *client_override, map_list_t const *maps) { rlm_rcode_t rcode = RLM_MODULE_OK; map_t const *map = NULL; RADCLIENT *client; client_get_vp_ctx_t uctx; - if (!fr_dlist_empty(client_override)) { + if (!fr_value_box_list_empty(client_override)) { fr_ipaddr_t ip; char const *client_str; - fr_value_box_t *client_override_head = fr_dlist_head(client_override); + fr_value_box_t *client_override_head = fr_value_box_list_head(client_override); /* * Concat don't asprint, as this becomes a noop @@ -231,14 +231,14 @@ static xlat_arg_parser_t const xlat_client_args[] = { */ static xlat_action_t xlat_client(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { char const *value = NULL; fr_ipaddr_t ip; CONF_PAIR *cp; RADCLIENT *client = NULL; - fr_value_box_t *field = fr_dlist_head(in); - fr_value_box_t *client_ip = fr_dlist_next(in, field); + fr_value_box_t *field = fr_value_box_list_head(in); + fr_value_box_t *client_ip = fr_value_box_list_next(in, field); fr_value_box_t *vb; if (client_ip) { diff --git a/src/modules/rlm_csv/rlm_csv.c b/src/modules/rlm_csv/rlm_csv.c index 0c8f8c33b32..528a1788435 100644 --- a/src/modules/rlm_csv/rlm_csv.c +++ b/src/modules/rlm_csv/rlm_csv.c @@ -32,7 +32,7 @@ RCSID("$Id$") #include static rlm_rcode_t mod_map_proc(void *mod_inst, UNUSED void *proc_inst, request_t *request, - fr_value_box_list_t *key, map_list_t const *maps); + FR_DLIST_HEAD(fr_value_box_list) *key, map_list_t const *maps); /* * Define a structure for our module configuration. @@ -978,10 +978,10 @@ finish: * - #RLM_MODULE_FAIL if an error occurred. */ static rlm_rcode_t mod_map_proc(void *mod_inst, UNUSED void *proc_inst, request_t *request, - fr_value_box_list_t *key, map_list_t const *maps) + FR_DLIST_HEAD(fr_value_box_list) *key, map_list_t const *maps) { rlm_csv_t *inst = talloc_get_type_abort(mod_inst, rlm_csv_t); - fr_value_box_t *key_head = fr_dlist_head(key); + fr_value_box_t *key_head = fr_value_box_list_head(key); if (!key_head) { REDEBUG("CSV key cannot be (null)"); diff --git a/src/modules/rlm_date/rlm_date.c b/src/modules/rlm_date/rlm_date.c index ce51a2423ee..79cd2e5efe6 100644 --- a/src/modules/rlm_date/rlm_date.c +++ b/src/modules/rlm_date/rlm_date.c @@ -167,11 +167,11 @@ update request { */ static xlat_action_t xlat_date_convert(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_date_t const *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_date_t); struct tm tminfo; - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); memset(&tminfo, 0, sizeof(tminfo)); diff --git a/src/modules/rlm_delay/rlm_delay.c b/src/modules/rlm_delay/rlm_delay.c index a914acc189d..ecd59b70900 100644 --- a/src/modules/rlm_delay/rlm_delay.c +++ b/src/modules/rlm_delay/rlm_delay.c @@ -176,7 +176,7 @@ static unlang_action_t CC_HINT(nonnull) mod_delay(rlm_rcode_t *p_result, module_ static xlat_action_t xlat_delay_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { fr_time_t *yielded_at = talloc_get_type_abort(xctx->rctx, fr_time_t); fr_time_delta_t delayed; @@ -218,11 +218,11 @@ static xlat_arg_parser_t const xlat_delay_args[] = { */ static xlat_action_t xlat_delay(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_delay_t const *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_delay_t); fr_time_t resume_at, *yielded_at; - fr_value_box_t *delay = fr_dlist_head(in); + fr_value_box_t *delay = fr_value_box_list_head(in); /* * Record the time that we yielded the request diff --git a/src/modules/rlm_dict/rlm_dict.c b/src/modules/rlm_dict/rlm_dict.c index e9975b96a0e..13f34916413 100644 --- a/src/modules/rlm_dict/rlm_dict.c +++ b/src/modules/rlm_dict/rlm_dict.c @@ -38,10 +38,10 @@ static xlat_arg_parser_t const xlat_dict_attr_by_num_args[] = { */ static xlat_action_t xlat_dict_attr_by_num(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_dict_attr_t const *da; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); fr_value_box_t *vb; da = fr_dict_attr_child_by_num(fr_dict_root(request->dict), attr->vb_uint32); @@ -72,13 +72,13 @@ static xlat_arg_parser_t const xlat_dict_attr_by_oid_args[] = { */ static xlat_action_t xlat_dict_attr_by_oid(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { unsigned int attr = 0; fr_dict_attr_t const *parent = fr_dict_root(request->dict); fr_dict_attr_t const *da; ssize_t ret; - fr_value_box_t *attr_vb = fr_dlist_head(in); + fr_value_box_t *attr_vb = fr_value_box_list_head(in); fr_value_box_t *vb; ret = fr_dict_attr_by_oid_legacy(fr_dict_internal(), &parent, &attr, attr_vb->vb_strvalue); @@ -111,11 +111,11 @@ static xlat_arg_parser_t const xlat_vendor_args[] = { */ static xlat_action_t xlat_vendor(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_t *vp; fr_dict_vendor_t const *vendor; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); fr_value_box_t *vb; if ((xlat_fmt_get_vp(&vp, request, attr->vb_strvalue) < 0) || !vp) return XLAT_ACTION_FAIL; @@ -145,10 +145,10 @@ static xlat_arg_parser_t const xlat_vendor_num_args[] = { */ static xlat_action_t xlat_vendor_num(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_t *vp; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); fr_value_box_t *vb; if ((xlat_fmt_get_vp(&vp, request, attr->vb_strvalue) < 0) || !vp) return XLAT_ACTION_FAIL; @@ -170,10 +170,10 @@ static xlat_arg_parser_t const xlat_attr_args[] = { */ static xlat_action_t xlat_attr(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_t *vp; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); fr_value_box_t *vb; if ((xlat_fmt_get_vp(&vp, request, attr->vb_strvalue) < 0) || !vp) return XLAT_ACTION_FAIL; @@ -200,10 +200,10 @@ static xlat_arg_parser_t const xlat_attr_num_args[] = { */ static xlat_action_t xlat_attr_num(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_pair_t *vp; - fr_value_box_t *attr = fr_dlist_head(in); + fr_value_box_t *attr = fr_value_box_list_head(in); fr_value_box_t *vb; if ((xlat_fmt_get_vp(&vp, request, attr->vb_strvalue) < 0) || !vp) return XLAT_ACTION_FAIL; diff --git a/src/modules/rlm_escape/rlm_escape.c b/src/modules/rlm_escape/rlm_escape.c index cf11bf74cf6..f542f19eaea 100644 --- a/src/modules/rlm_escape/rlm_escape.c +++ b/src/modules/rlm_escape/rlm_escape.c @@ -58,10 +58,10 @@ static xlat_arg_parser_t const escape_xlat_arg = { .required = true, .concat = t */ static xlat_action_t escape_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_escape_t const *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_escape_t); - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); char const *p = arg->vb_strvalue; size_t len; fr_value_box_t *vb; @@ -129,9 +129,9 @@ static xlat_arg_parser_t const unescape_xlat_arg = { .required = true, .concat = */ static xlat_action_t unescape_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); char const *p, *end; char *out_p; char *c1, *c2, c3; diff --git a/src/modules/rlm_exec/rlm_exec.c b/src/modules/rlm_exec/rlm_exec.c index 3e20b819442..b6f578d3f7f 100644 --- a/src/modules/rlm_exec/rlm_exec.c +++ b/src/modules/rlm_exec/rlm_exec.c @@ -63,7 +63,7 @@ static const CONF_PARSER module_config[] = { static xlat_action_t exec_xlat_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { fr_exec_state_t *exec = talloc_get_type_abort(xctx->rctx, fr_exec_state_t); fr_value_box_t *vb; @@ -112,7 +112,7 @@ static xlat_arg_parser_t const exec_xlat_args[] = { */ static xlat_action_t exec_xlat(TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_exec_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_exec_t); fr_pair_list_t *env_pairs = NULL; @@ -272,7 +272,7 @@ static unlang_action_t mod_exec_nowait_resume(rlm_rcode_t *p_result, module_ctx_ request_t *request) { rlm_exec_t const *inst = talloc_get_type_abort_const(mctx->inst->data, rlm_exec_t); - fr_value_box_list_t *box = talloc_get_type_abort(mctx->rctx, fr_value_box_list_t); + FR_DLIST_HEAD(fr_value_box_list) *box = talloc_get_type_abort(mctx->rctx, FR_DLIST_HEAD(fr_value_box_list)); fr_pair_list_t *env_pairs = NULL; /* @@ -294,7 +294,7 @@ static unlang_action_t mod_exec_nowait_resume(rlm_rcode_t *p_result, module_ctx_ } typedef struct { - fr_value_box_list_t box; + FR_DLIST_HEAD(fr_value_box_list) box; int status; } rlm_exec_ctx_t; @@ -366,14 +366,14 @@ static unlang_action_t mod_exec_wait_resume(rlm_rcode_t *p_result, module_ctx_t /* * Also prints stdout as an error if there was any... */ - rcode = rlm_exec_status2rcode(request, fr_dlist_head(&m->box), m->status); + rcode = rlm_exec_status2rcode(request, fr_value_box_list_head(&m->box), m->status); switch (rcode) { case RLM_MODULE_OK: case RLM_MODULE_UPDATED: - if (inst->output && !fr_dlist_empty(&m->box)) { + if (inst->output && !fr_value_box_list_empty(&m->box)) { TALLOC_CTX *ctx; fr_pair_list_t vps, *output_pairs; - fr_value_box_t *box = fr_dlist_head(&m->box); + fr_value_box_t *box = fr_value_box_list_head(&m->box); fr_pair_list_init(&vps); output_pairs = tmpl_list_head(request, inst->output_list); @@ -384,7 +384,7 @@ static unlang_action_t mod_exec_wait_resume(rlm_rcode_t *p_result, module_ctx_t fr_pair_list_afrom_box(ctx, &vps, request->dict, box); if (!fr_pair_list_empty(&vps)) fr_pair_list_move_op(output_pairs, &vps, T_OP_ADD_EQ); - fr_dlist_talloc_free(&m->box); /* has been consumed */ + fr_value_box_list_talloc_free(&m->box); /* has been consumed */ } break; @@ -430,7 +430,7 @@ static unlang_action_t CC_HINT(nonnull) mod_exec_dispatch(rlm_rcode_t *p_result, * Do the asynchronous xlat expansion. */ if (!inst->wait) { - fr_value_box_list_t *box = talloc_zero(ctx, fr_value_box_list_t); + FR_DLIST_HEAD(fr_value_box_list) *box = talloc_zero(ctx, FR_DLIST_HEAD(fr_value_box_list)); fr_value_box_list_init(box); return unlang_module_yield_to_xlat(request, NULL, box, request, tmpl_xlat(inst->tmpl), diff --git a/src/modules/rlm_icmp/rlm_icmp.c b/src/modules/rlm_icmp/rlm_icmp.c index f293a52a7c7..1645943bf36 100644 --- a/src/modules/rlm_icmp/rlm_icmp.c +++ b/src/modules/rlm_icmp/rlm_icmp.c @@ -111,7 +111,7 @@ static const CONF_PARSER module_config[] = { static xlat_action_t xlat_icmp_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - UNUSED request_t *request, UNUSED fr_value_box_list_t *in) + UNUSED request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_icmp_echo_t *echo = talloc_get_type_abort(xctx->rctx, rlm_icmp_echo_t); rlm_icmp_thread_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_icmp_thread_t); @@ -169,7 +169,7 @@ static xlat_arg_parser_t const xlat_icmp_args[] = { */ static xlat_action_t xlat_icmp(TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_icmp_t *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_icmp_t); rlm_icmp_thread_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_icmp_thread_t); @@ -179,7 +179,7 @@ static xlat_action_t xlat_icmp(TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, ssize_t rcode; socklen_t salen; struct sockaddr_storage dst; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); /* * If there's no input, do we can't ping anything. diff --git a/src/modules/rlm_idn/rlm_idn.c b/src/modules/rlm_idn/rlm_idn.c index 65ab6a2a08f..dee08da448d 100644 --- a/src/modules/rlm_idn/rlm_idn.c +++ b/src/modules/rlm_idn/rlm_idn.c @@ -98,14 +98,14 @@ static xlat_arg_parser_t const xlat_idna_arg = { .required = true, .concat = tru */ static xlat_action_t xlat_idna(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_idn_t const *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_idn_t); char *idna = NULL; int res; size_t len; int flags = 0; - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); fr_value_box_t *vb; if (inst->use_std3_ascii_rules) { diff --git a/src/modules/rlm_json/rlm_json.c b/src/modules/rlm_json/rlm_json.c index a0f7d9b2cb8..565bbd65e07 100644 --- a/src/modules/rlm_json/rlm_json.c +++ b/src/modules/rlm_json/rlm_json.c @@ -88,10 +88,10 @@ static xlat_arg_parser_t const json_quote_xlat_arg = { */ static xlat_action_t json_quote_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); char *tmp; if (!in_head) return XLAT_ACTION_DONE; /* Empty input is allowed */ @@ -122,9 +122,9 @@ static xlat_arg_parser_t const jpath_validate_xlat_arg = { */ static xlat_action_t jpath_validate_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *path = fr_dlist_head(in); + fr_value_box_t *path = fr_value_box_list_head(in); fr_jpath_node_t *head; ssize_t slen; char *jpath_str; @@ -163,7 +163,7 @@ static xlat_arg_parser_t const json_encode_xlat_arg = { */ static xlat_action_t json_encode_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_json_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_json_t); fr_json_format_t const *format = inst->format; @@ -175,7 +175,7 @@ static xlat_action_t json_encode_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, char *json_str = NULL; fr_value_box_t *vb; fr_sbuff_t sbuff; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); fr_pair_list_init(&json_vps); fr_pair_list_init(&vps); @@ -373,7 +373,7 @@ static int _json_map_proc_get_value(TALLOC_CTX *ctx, fr_pair_list_t *out, reques fr_pair_t *vp; rlm_json_jpath_to_eval_t *to_eval = uctx; fr_value_box_t *value; - fr_value_box_list_t head; + FR_DLIST_HEAD(fr_value_box_list) head; int ret; fr_pair_list_free(out); @@ -386,11 +386,11 @@ static int _json_map_proc_get_value(TALLOC_CTX *ctx, fr_pair_list_t *out, reques return -1; } if (ret == 0) return 0; - fr_assert(!fr_dlist_empty(&head)); + fr_assert(!fr_value_box_list_empty(&head)); - for (value = fr_dlist_head(&head); + for (value = fr_value_box_list_head(&head); value; - fr_pair_append(out, vp), value = fr_dlist_next(&head, value)) { + fr_pair_append(out, vp), value = fr_value_box_list_next(&head, value)) { MEM(vp = fr_pair_afrom_da(ctx, tmpl_da(map->lhs))); if (fr_value_box_steal(vp, &vp->data, value) < 0) { @@ -417,7 +417,7 @@ static int _json_map_proc_get_value(TALLOC_CTX *ctx, fr_pair_list_t *out, reques * - #RLM_MODULE_FAIL if a fault occurred. */ static rlm_rcode_t mod_map_proc(UNUSED void *mod_inst, void *proc_inst, request_t *request, - fr_value_box_list_t *json, map_list_t const *maps) + FR_DLIST_HEAD(fr_value_box_list) *json, map_list_t const *maps) { rlm_rcode_t rcode = RLM_MODULE_UPDATED; struct json_tokener *tok; @@ -428,7 +428,7 @@ static rlm_rcode_t mod_map_proc(UNUSED void *mod_inst, void *proc_inst, request_ rlm_json_jpath_to_eval_t to_eval; char const *json_str = NULL; - fr_value_box_t *json_head = fr_dlist_head(json); + fr_value_box_t *json_head = fr_value_box_list_head(json); if (!json_head) { REDEBUG("JSON map input cannot be (null)"); diff --git a/src/modules/rlm_ldap/rlm_ldap.c b/src/modules/rlm_ldap/rlm_ldap.c index f4973ba5467..632edc8fd82 100644 --- a/src/modules/rlm_ldap/rlm_ldap.c +++ b/src/modules/rlm_ldap/rlm_ldap.c @@ -185,9 +185,9 @@ static xlat_arg_parser_t const ldap_escape_xlat_arg = { .required = true, .conca */ static xlat_action_t ldap_escape_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *vb, *in_vb = fr_dlist_head(in); + fr_value_box_t *vb, *in_vb = fr_value_box_list_head(in); fr_sbuff_t sbuff; fr_sbuff_uctx_talloc_t sbuff_ctx; size_t len; @@ -223,9 +223,9 @@ static xlat_action_t ldap_escape_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, */ static xlat_action_t ldap_unescape_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *vb, *in_vb = fr_dlist_head(in); + fr_value_box_t *vb, *in_vb = fr_value_box_list_head(in); fr_sbuff_t sbuff; fr_sbuff_uctx_talloc_t sbuff_ctx; size_t len; @@ -308,7 +308,7 @@ static void ldap_query_timeout(UNUSED fr_event_list_t *el, UNUSED fr_time_t now, */ static xlat_action_t ldap_xlat_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { fr_ldap_query_t *query = talloc_get_type_abort(xctx->rctx, fr_ldap_query_t); fr_ldap_connection_t *ldap_conn = query->ldap_conn; @@ -392,7 +392,7 @@ static xlat_arg_parser_t const ldap_xlat_arg = { .required = true, .type = FR_TY */ static xlat_action_t ldap_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { fr_ldap_thread_t *t = talloc_get_type_abort(xctx->mctx->thread, fr_ldap_thread_t); fr_value_box_t *in_vb = NULL; @@ -405,7 +405,7 @@ static xlat_action_t ldap_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, if (fr_uri_escape(in, ldap_uri_parts, NULL) < 0) return XLAT_ACTION_FAIL; - in_vb = fr_dlist_head(in); + in_vb = fr_value_box_list_head(in); if (fr_value_box_list_concat_in_place(in_vb, in_vb, in, FR_TYPE_STRING, FR_VALUE_BOX_LIST_FREE, true, SIZE_MAX) < 0) { REDEBUG("Failed concattenating input"); @@ -635,7 +635,7 @@ static void _ldap_async_bind_auth_watch(fr_connection_t *conn, UNUSED fr_connect * - #RLM_MODULE_FAIL if an error occurred. */ static rlm_rcode_t mod_map_proc(void *mod_inst, UNUSED void *proc_inst, request_t *request, - fr_value_box_list_t *url, map_list_t const *maps) + FR_DLIST_HEAD(fr_value_box_list) *url, map_list_t const *maps) { rlm_rcode_t rcode = RLM_MODULE_UPDATED; rlm_ldap_t *inst = talloc_get_type_abort(mod_inst, rlm_ldap_t); @@ -652,7 +652,7 @@ static rlm_rcode_t mod_map_proc(void *mod_inst, UNUSED void *proc_inst, request_ fr_ldap_thread_trunk_t *ttrunk; fr_ldap_map_exp_t expanded; /* faster than allocing every time */ - fr_value_box_t *url_head = fr_dlist_head(url); + fr_value_box_t *url_head = fr_value_box_list_head(url); /* * FIXME - Maybe it can be NULL? diff --git a/src/modules/rlm_mschap/rlm_mschap.c b/src/modules/rlm_mschap/rlm_mschap.c index 5ed1d064d33..b5b9193bbe6 100644 --- a/src/modules/rlm_mschap/rlm_mschap.c +++ b/src/modules/rlm_mschap/rlm_mschap.c @@ -303,7 +303,7 @@ static xlat_arg_parser_t const mschap_xlat_args[] = { */ static xlat_action_t mschap_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { size_t data_len; uint8_t const *data = NULL; @@ -311,7 +311,7 @@ static xlat_action_t mschap_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_pair_t *user_name; fr_pair_t *chap_challenge, *response; rlm_mschap_t const *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_mschap_t); - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); fr_value_box_t *vb; bool tainted = false; @@ -646,7 +646,7 @@ static xlat_action_t mschap_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, * Return the NT-Hash of the passed string */ } else if (strncasecmp(arg->vb_strvalue, "NT-Hash", 7) == 0) { - arg = fr_dlist_next(in, arg); + arg = fr_value_box_list_next(in, arg); if ((!arg) || (arg->length == 0)) return XLAT_ACTION_FAIL; @@ -666,7 +666,7 @@ static xlat_action_t mschap_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, * Return the LM-Hash of the passed string */ } else if (strncasecmp(arg->vb_strvalue, "LM-Hash", 7) == 0) { - arg = fr_dlist_next(in, arg); + arg = fr_value_box_list_next(in, arg); if ((!arg) || (arg->length == 0)) return XLAT_ACTION_FAIL; diff --git a/src/modules/rlm_perl/rlm_perl.c b/src/modules/rlm_perl/rlm_perl.c index e220fa2bba0..2649c744ad0 100644 --- a/src/modules/rlm_perl/rlm_perl.c +++ b/src/modules/rlm_perl/rlm_perl.c @@ -278,11 +278,11 @@ static void xs_init(pTHX) * - 0 on success * - -1 on failure */ -static int perl_vblist_to_av(AV *av, fr_value_box_list_t *head) { +static int perl_vblist_to_av(AV *av, FR_DLIST_HEAD(fr_value_box_list) *head) { fr_value_box_t *vb = NULL; SV *sv; - while ((vb = fr_dlist_next(head, vb))) { + while ((vb = fr_value_box_list_next(head, vb))) { switch (vb->type) { case FR_TYPE_STRING: sv = newSVpvn(vb->vb_strvalue, vb->length); @@ -332,7 +332,7 @@ static int perl_vblist_to_av(AV *av, fr_value_box_list_t *head) { * - 0 on success * - -1 on failure */ -static int perl_sv_to_vblist(TALLOC_CTX *ctx, fr_value_box_list_t *list, request_t *request, SV *sv) { +static int perl_sv_to_vblist(TALLOC_CTX *ctx, FR_DLIST_HEAD(fr_value_box_list) *list, request_t *request, SV *sv) { fr_value_box_t *vb = NULL; char *tmp; STRLEN len; @@ -408,7 +408,7 @@ static int perl_sv_to_vblist(TALLOC_CTX *ctx, fr_value_box_list_t *list, request RPEDEBUG("Failed to allocate %d for output", sv_len); return -1; } - fr_dlist_insert_tail(list, vb); + fr_value_box_list_insert_tail(list, vb); /* * Now process value @@ -431,7 +431,7 @@ static int perl_sv_to_vblist(TALLOC_CTX *ctx, fr_value_box_list_t *list, request } - if (vb) fr_dlist_insert_tail(list, vb); + if (vb) fr_value_box_list_insert_tail(list, vb); return 0; } @@ -448,17 +448,17 @@ static xlat_arg_parser_t const perl_xlat_args[] = { */ static xlat_action_t perl_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_perl_thread_t const *t = talloc_get_type_abort_const(xctx->mctx->thread, rlm_perl_thread_t); int count, i; xlat_action_t ret = XLAT_ACTION_FAIL; STRLEN n_a; - fr_value_box_t *func = fr_dlist_pop_head(in); + fr_value_box_t *func = fr_value_box_list_pop_head(in); fr_value_box_t *arg = NULL, *child; SV *sv; AV *av; - fr_value_box_list_t list, sub_list; + FR_DLIST_HEAD(fr_value_box_list) list, sub_list; fr_value_box_t *vb = NULL; fr_value_box_list_init(&list); @@ -475,12 +475,12 @@ static xlat_action_t perl_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, PUSHMARK(SP); - while ((arg = fr_dlist_next(in, arg))) { + while ((arg = fr_value_box_list_next(in, arg))) { fr_assert(arg->type == FR_TYPE_GROUP); - if (fr_dlist_empty(&arg->vb_group)) continue; + if (fr_value_box_list_empty(&arg->vb_group)) continue; - if (fr_dlist_num_elements(&arg->vb_group) == 1) { - child = fr_dlist_head(&arg->vb_group); + if (fr_value_box_list_num_elements(&arg->vb_group) == 1) { + child = fr_value_box_list_head(&arg->vb_group); /* * Single child value - add as scalar */ @@ -521,14 +521,14 @@ static xlat_action_t perl_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, for (i = 0; i < count; i++) { sv = POPs; if (perl_sv_to_vblist(ctx, &sub_list, request, sv) < 0) goto cleanup; - fr_dlist_move_head(&list, &sub_list); + fr_value_box_list_move_head(&list, &sub_list); } ret = XLAT_ACTION_DONE; /* * Move the assembled list of boxes to the output */ - while ((vb = fr_dlist_pop_head(&list))) fr_dcursor_append(out, vb); + while ((vb = fr_value_box_list_pop_head(&list))) fr_dcursor_append(out, vb); cleanup: PUTBACK; diff --git a/src/modules/rlm_redis/rlm_redis.c b/src/modules/rlm_redis/rlm_redis.c index 4c16ac44b0b..dce4127b8d2 100644 --- a/src/modules/rlm_redis/rlm_redis.c +++ b/src/modules/rlm_redis/rlm_redis.c @@ -154,7 +154,7 @@ static xlat_arg_parser_t const redis_remap_xlat_args[] = { */ static xlat_action_t redis_remap_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_redis_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_redis_t); @@ -163,7 +163,7 @@ static xlat_action_t redis_remap_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, fr_redis_conn_t *conn; fr_redis_cluster_rcode_t rcode; fr_value_box_t *vb; - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); if (fr_inet_pton_port(&node_addr.inet.dst_ipaddr, &node_addr.inet.dst_port, in_head->vb_strvalue, in_head->vb_length, AF_UNSPEC, true, true) < 0) { @@ -208,7 +208,7 @@ static xlat_arg_parser_t const redis_node_xlat_args[] = { */ static xlat_action_t redis_node_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_redis_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_redis_t); @@ -219,8 +219,8 @@ static xlat_action_t redis_node_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, unsigned long idx = 0; fr_value_box_t *vb; - fr_value_box_t *key = fr_dlist_head(in); - fr_value_box_t *idx_vb = fr_dlist_next(in, key); + fr_value_box_t *key = fr_value_box_list_head(in); + fr_value_box_t *idx_vb = fr_value_box_list_next(in, key); if (idx_vb) idx = idx_vb->vb_uint32; @@ -264,7 +264,7 @@ static xlat_arg_parser_t const redis_args[] = { */ static xlat_action_t redis_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_redis_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_redis_t); xlat_action_t action = XLAT_ACTION_DONE; @@ -280,7 +280,7 @@ static xlat_action_t redis_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, redisReply *reply = NULL; int s_ret; - fr_value_box_t *first = fr_dlist_head(in); + fr_value_box_t *first = fr_value_box_list_head(in); fr_sbuff_t sbuff = FR_SBUFF_IN(first->vb_strvalue, first->vb_length); int argc = 0; @@ -318,9 +318,9 @@ static xlat_action_t redis_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, return XLAT_ACTION_FAIL; } - fr_dlist_talloc_free_head(in); /* Remove and free server arg */ + fr_value_box_list_talloc_free_head(in); /* Remove and free server arg */ - fr_dlist_foreach(in, fr_value_box_t, vb) { + fr_value_box_list_foreach(in, vb) { if (argc == NUM_ELEMENTS(argv)) { REDEBUG("Too many arguments (%i)", argc); REXDENT(); @@ -332,7 +332,7 @@ static xlat_action_t redis_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, argc++; } - RDEBUG2("Executing command: %pV", fr_dlist_head(in)); + RDEBUG2("Executing command: %pV", fr_value_box_list_head(in)); if (argc > 1) { RDEBUG2("With arguments"); RINDENT(); @@ -379,7 +379,7 @@ static xlat_action_t redis_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, RDEBUG2("REDIS command arguments"); RINDENT(); - fr_dlist_foreach(in, fr_value_box_t, vb) { + fr_value_box_list_foreach(in, vb) { if (argc == NUM_ELEMENTS(argv)) { REDEBUG("Too many arguments (%i)", argc); REXDENT(); @@ -407,7 +407,7 @@ static xlat_action_t redis_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, for (s_ret = fr_redis_cluster_state_init(&state, &conn, inst->cluster, request, key, key_len, read_only); s_ret == REDIS_RCODE_TRY_AGAIN; /* Continue */ s_ret = fr_redis_cluster_state_next(&state, &conn, inst->cluster, request, status, &reply)) { - RDEBUG2("Executing command: %pV", fr_dlist_head(in)); + RDEBUG2("Executing command: %pV", fr_value_box_list_head(in)); if (argc > 1) { RDEBUG2("With arguments"); RINDENT(); diff --git a/src/modules/rlm_redis_ippool/rlm_redis_ippool.c b/src/modules/rlm_redis_ippool/rlm_redis_ippool.c index bcb0665e7b5..75490ec8553 100644 --- a/src/modules/rlm_redis_ippool/rlm_redis_ippool.c +++ b/src/modules/rlm_redis_ippool/rlm_redis_ippool.c @@ -200,7 +200,7 @@ static char lua_alloc_cmd[] = "local owner_key" EOL /* 5 */ "pool_key = '{' .. KEYS[1] .. '}:"IPPOOL_POOL_KEY"'" EOL /* 6 */ - "owner_key = '{' .. KEYS[1] .. '}:"IPPOOL_OWNER_KEY":' .. ARGV[3]" EOL /* 7 */ + "owner_key = '{' .. KEYS[1] .. '}:"IPPOOL_OWNER_KEY":' .. ARGV[3]" EOL /* 7 */ /* * Check to see if the client already has a lease, @@ -215,10 +215,10 @@ static char lua_alloc_cmd[] = " if expires_in > 0 then" EOL /* 11 */ " ip = redis.call('HMGET', '{' .. KEYS[1] .. '}:"IPPOOL_ADDRESS_KEY":' .. exists, 'device', 'range', 'counter')" EOL /* 12 */ " if ip and (ip[1] == ARGV[3]) then" EOL /* 13 */ -// " if expires_in < ARGV[2] then" EOL /* 14 */ -// " redis.call('ZADD', pool_key, 'XX', ARGV[1] + ARGV[2], ip[1])" EOL /* 15 */ -// " expires_in = ARGV[2]" EOL /* 16 */ -// " end" EOL /* 17 */ + " if expires_in < ARGV[2] then" EOL /* 14 */ + " redis.call('ZADD', pool_key, 'XX', ARGV[1] + ARGV[2], ip[1])" EOL /* 15 */ + " expires_in = ARGV[2]" EOL /* 16 */ + " end" EOL /* 17 */ " return {" STRINGIFY(_IPPOOL_RCODE_SUCCESS) ", exists, ip[2], expires_in, ip[3] }" EOL /* 18 */ " end" EOL /* 19 */ " end" EOL /* 20 */ diff --git a/src/modules/rlm_rest/rlm_rest.c b/src/modules/rlm_rest/rlm_rest.c index 978cf92a75c..bfd6d14b51a 100644 --- a/src/modules/rlm_rest/rlm_rest.c +++ b/src/modules/rlm_rest/rlm_rest.c @@ -259,7 +259,7 @@ static int rlm_rest_perform(module_ctx_t const *mctx, static xlat_action_t rest_xlat_resume(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_rest_t const *inst = talloc_get_type_abort(xctx->mctx->inst->data, rlm_rest_t); rlm_rest_thread_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_rest_thread_t); @@ -393,7 +393,7 @@ static xlat_arg_parser_t const rest_xlat_args[] = { */ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, xlat_ctx_t const *xctx, request_t *request, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_rest_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_rest_t); rlm_rest_thread_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_rest_thread_t); @@ -401,7 +401,7 @@ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, fr_curl_io_request_t *randle = NULL; int ret; http_method_t method; - fr_value_box_t *in_vb = fr_dlist_pop_head(in), *uri_vb = NULL; + fr_value_box_t *in_vb = fr_value_box_list_pop_head(in), *uri_vb = NULL; /* There are no configurable parameters other than the URI */ rlm_rest_xlat_rctx_t *rctx; @@ -420,8 +420,8 @@ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, /* * If we have more than 1 argument, then the first is the method */ - if ((fr_dlist_head(in))) { - uri_vb = fr_dlist_head(&in_vb->vb_group); + if ((fr_value_box_list_head(in))) { + uri_vb = fr_value_box_list_head(&in_vb->vb_group); if (fr_value_box_list_concat_in_place(uri_vb, uri_vb, &in_vb->vb_group, FR_TYPE_STRING, FR_VALUE_BOX_LIST_FREE, true, @@ -443,7 +443,7 @@ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, /* * Move to next argument */ - in_vb = fr_dlist_pop_head(in); + in_vb = fr_value_box_list_pop_head(in); uri_vb = NULL; } else { section->method = REST_HTTP_METHOD_GET; @@ -477,7 +477,7 @@ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, return XLAT_ACTION_FAIL; } - uri_vb = fr_dlist_head(&in_vb->vb_group); + uri_vb = fr_value_box_list_head(&in_vb->vb_group); if (fr_value_box_list_concat_in_place(uri_vb, uri_vb, &in_vb->vb_group, FR_TYPE_STRING, FR_VALUE_BOX_LIST_FREE, true, @@ -489,7 +489,7 @@ static xlat_action_t rest_xlat(UNUSED TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out, /* * Any additional arguments are freeform data */ - if ((in_vb = fr_dlist_head(in))) { + if ((in_vb = fr_value_box_list_head(in))) { if (fr_value_box_list_concat_in_place(in_vb, in_vb, in, FR_TYPE_STRING, FR_VALUE_BOX_LIST_FREE, true, diff --git a/src/modules/rlm_soh/rlm_soh.c b/src/modules/rlm_soh/rlm_soh.c index a9adf013b7a..11fabb6e4df 100644 --- a/src/modules/rlm_soh/rlm_soh.c +++ b/src/modules/rlm_soh/rlm_soh.c @@ -82,9 +82,9 @@ static xlat_arg_parser_t const soh_xlat_args[] = { */ static xlat_action_t soh_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, request_t *request, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); fr_value_box_t *vb; fr_pair_t* vp[6]; char const *osname; diff --git a/src/modules/rlm_sql/rlm_sql.c b/src/modules/rlm_sql/rlm_sql.c index 6ce8e036af5..d7c8a754526 100644 --- a/src/modules/rlm_sql/rlm_sql.c +++ b/src/modules/rlm_sql/rlm_sql.c @@ -161,13 +161,13 @@ static size_t sql_escape_func(request_t *, char *out, size_t outlen, char const */ static int sql_xlat_escape(request_t *request, fr_value_box_t *vb, void *uctx) { - fr_sbuff_t sbuff; - fr_sbuff_uctx_talloc_t sbuff_ctx; + fr_sbuff_t sbuff; + fr_sbuff_uctx_talloc_t sbuff_ctx; - size_t len; - rlm_sql_handle_t *handle; - rlm_sql_t *inst = talloc_get_type_abort(uctx, rlm_sql_t); - fr_dlist_t entry; + size_t len; + rlm_sql_handle_t *handle; + rlm_sql_t *inst = talloc_get_type_abort(uctx, rlm_sql_t); + FR_DLIST_ENTRY(fr_value_box_list) entry; handle = fr_pool_connection_get(inst->pool, request); if (!handle) { @@ -212,7 +212,7 @@ static int sql_xlat_escape(request_t *request, fr_value_box_t *vb, void *uctx) */ static xlat_action_t sql_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_sql_handle_t *handle = NULL; rlm_sql_row_t row; @@ -220,7 +220,7 @@ static xlat_action_t sql_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, sql_rcode_t rcode; xlat_action_t ret = XLAT_ACTION_DONE; char const *p; - fr_value_box_t *arg = fr_dlist_head(in); + fr_value_box_t *arg = fr_value_box_list_head(in); fr_value_box_t *vb = NULL; bool fetched = false; @@ -380,7 +380,7 @@ static int sql_map_verify(CONF_SECTION *cs, UNUSED void *mod_inst, UNUSED void * * - #RLM_MODULE_FAIL if a fault occurred. */ static rlm_rcode_t mod_map_proc(void *mod_inst, UNUSED void *proc_inst, request_t *request, - fr_value_box_list_t *query, map_list_t const *maps) + FR_DLIST_HEAD(fr_value_box_list) *query, map_list_t const *maps) { rlm_sql_t *inst = talloc_get_type_abort(mod_inst, rlm_sql_t); rlm_sql_handle_t *handle = NULL; @@ -400,7 +400,7 @@ static rlm_rcode_t mod_map_proc(void *mod_inst, UNUSED void *proc_inst, request_ char map_rhs_buff[128]; char const *query_str = NULL; - fr_value_box_t *query_head = fr_dlist_head(query); + fr_value_box_t *query_head = fr_value_box_list_head(query); #define MAX_SQL_FIELD_INDEX (64) diff --git a/src/modules/rlm_test/rlm_test.c b/src/modules/rlm_test/rlm_test.c index a318b16eb74..394b54bf1b3 100644 --- a/src/modules/rlm_test/rlm_test.c +++ b/src/modules/rlm_test/rlm_test.c @@ -358,9 +358,9 @@ static xlat_arg_parser_t const trigger_test_xlat_args[] = { */ static xlat_action_t trigger_test_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, request_t *request, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { - fr_value_box_t *in_head = fr_dlist_head(in); + fr_value_box_t *in_head = fr_value_box_list_head(in); fr_value_box_t *vb; MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_BOOL, NULL, false)); @@ -390,12 +390,12 @@ static xlat_arg_parser_t const test_xlat_args[] = { */ static xlat_action_t test_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, UNUSED request_t *request, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb_p = NULL; fr_value_box_t *vb; - while ((vb_p = fr_dlist_next(in, vb_p))) { + while ((vb_p = fr_value_box_list_next(in, vb_p))) { MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_STRING, NULL, false)); if (fr_value_box_copy(ctx, vb, vb_p) < 0) { diff --git a/src/modules/rlm_unbound/rlm_unbound.c b/src/modules/rlm_unbound/rlm_unbound.c index bf4dca854db..495b6f0e185 100644 --- a/src/modules/rlm_unbound/rlm_unbound.c +++ b/src/modules/rlm_unbound/rlm_unbound.c @@ -59,7 +59,7 @@ typedef struct { fr_type_t return_type; //!< Data type to parse results into bool has_priority; //!< Does the returned data start with a priority field uint16_t count; //!< Number of results to return - fr_value_box_list_t list; //!< Where to put the parsed results + FR_DLIST_HEAD(fr_value_box_list) list; //!< Where to put the parsed results TALLOC_CTX *out_ctx; //!< CTX to allocate parsed results in fr_event_timer_t const *ev; //!< Event for timeout } unbound_request_t; @@ -200,7 +200,7 @@ static void xlat_unbound_callback(void *mydata, int rcode, void *packet, int pac &dbuff, rdlength, true) < 0) { error: talloc_free(vb); - fr_dlist_talloc_free(&ur->list); + fr_value_box_list_talloc_free(&ur->list); ur->done = -32; goto resume; } @@ -223,7 +223,7 @@ static void xlat_unbound_callback(void *mydata, int rcode, void *packet, int pac talloc_free(priority_vb); goto error; } - fr_dlist_insert_tail(&ur->list, priority_vb); + fr_value_box_list_insert_tail(&ur->list, priority_vb); } /* String types require decoding of dns format labels */ @@ -238,7 +238,7 @@ static void xlat_unbound_callback(void *mydata, int rcode, void *packet, int pac goto error; } - fr_dlist_insert_tail(&ur->list, vb); + fr_value_box_list_insert_tail(&ur->list, vb); } @@ -282,7 +282,7 @@ static void xlat_unbound_signal(xlat_ctx_t const *xctx, request_t *request, fr_s */ static xlat_action_t xlat_unbound_resume(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, UNUSED fr_value_box_list_t *in) + request_t *request, UNUSED FR_DLIST_HEAD(fr_value_box_list) *in) { fr_value_box_t *vb; unbound_request_t *ur = talloc_get_type_abort(xctx->rctx, unbound_request_t); @@ -320,7 +320,7 @@ static xlat_action_t xlat_unbound_resume(UNUSED TALLOC_CTX *ctx, fr_dcursor_t *o /* * Move parsed results into xlat cursor */ - while ((vb = fr_dlist_pop_head(&ur->list))) { + while ((vb = fr_value_box_list_pop_head(&ur->list))) { fr_dcursor_append(out, vb); } @@ -342,13 +342,13 @@ static xlat_arg_parser_t const xlat_unbound_args[] = { */ static xlat_action_t xlat_unbound(TALLOC_CTX *ctx, fr_dcursor_t *out, xlat_ctx_t const *xctx, - request_t *request, fr_value_box_list_t *in) + request_t *request, FR_DLIST_HEAD(fr_value_box_list) *in) { rlm_unbound_t const *inst = talloc_get_type_abort_const(xctx->mctx->inst->data, rlm_unbound_t); rlm_unbound_thread_t *t = talloc_get_type_abort(xctx->mctx->thread, rlm_unbound_thread_t); - fr_value_box_t *host_vb = fr_dlist_head(in); - fr_value_box_t *query_vb = fr_dlist_next(in, host_vb); - fr_value_box_t *count_vb = fr_dlist_next(in, query_vb); + fr_value_box_t *host_vb = fr_value_box_list_head(in); + fr_value_box_t *query_vb = fr_value_box_list_next(in, host_vb); + fr_value_box_t *count_vb = fr_value_box_list_next(in, query_vb); unbound_request_t *ur; if (host_vb->length == 0) { diff --git a/src/modules/rlm_unpack/rlm_unpack.c b/src/modules/rlm_unpack/rlm_unpack.c index ffb4fac8572..22344924af7 100644 --- a/src/modules/rlm_unpack/rlm_unpack.c +++ b/src/modules/rlm_unpack/rlm_unpack.c @@ -50,15 +50,15 @@ static xlat_arg_parser_t const unpack_xlat_args[] = { */ static xlat_action_t unpack_xlat(TALLOC_CTX *ctx, fr_dcursor_t *out, UNUSED xlat_ctx_t const *xctx, request_t *request, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { size_t len, input_len, offset; fr_type_t type; uint8_t const *input; uint8_t blob[256]; - fr_value_box_t *data_vb = fr_dlist_head(in); - fr_value_box_t *offset_vb = fr_dlist_next(in, data_vb); - fr_value_box_t *type_vb = fr_dlist_next(in, offset_vb); + fr_value_box_t *data_vb = fr_value_box_list_head(in); + fr_value_box_t *offset_vb = fr_value_box_list_next(in, data_vb); + fr_value_box_t *type_vb = fr_value_box_list_next(in, offset_vb); fr_value_box_t *vb; if ((data_vb->type != FR_TYPE_OCTETS) && (data_vb->type != FR_TYPE_STRING)) { diff --git a/src/modules/rlm_yubikey/rlm_yubikey.c b/src/modules/rlm_yubikey/rlm_yubikey.c index e8c1e83ddf6..e09c2e596b9 100644 --- a/src/modules/rlm_yubikey/rlm_yubikey.c +++ b/src/modules/rlm_yubikey/rlm_yubikey.c @@ -141,10 +141,10 @@ static xlat_arg_parser_t const modhex_to_hex_xlat_arg = { */ static xlat_action_t modhex_to_hex_xlat(UNUSED TALLOC_CTX *ctx, fr_dcursor_t * out, UNUSED xlat_ctx_t const *xctx, request_t *request, - fr_value_box_list_t *in) + FR_DLIST_HEAD(fr_value_box_list) *in) { ssize_t len; - fr_value_box_t *arg = fr_dlist_pop_head(in); + fr_value_box_t *arg = fr_value_box_list_pop_head(in); char *p = UNCONST(char *, arg->vb_strvalue); /*