]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Use type safe functions for value box lists
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 14 Nov 2022 23:04:00 +0000 (17:04 -0600)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 14 Nov 2022 23:32:27 +0000 (17:32 -0600)
77 files changed:
src/bin/unit_test_attribute.c
src/bin/unit_test_module.c
src/lib/eap_aka_sim/xlat.c
src/lib/json/base.h
src/lib/json/jpath.c
src/lib/redis/redis.c
src/lib/server/cf_file.c
src/lib/server/exec.c
src/lib/server/exec.h
src/lib/server/main_config.c
src/lib/server/map.h
src/lib/server/map_async.c
src/lib/server/map_proc.c
src/lib/server/map_proc.h
src/lib/server/tmpl.h
src/lib/server/tmpl_eval.c
src/lib/server/trigger.c
src/lib/server/trigger.h
src/lib/server/trunk.c
src/lib/unlang/compile.c
src/lib/unlang/condition.c
src/lib/unlang/edit.c
src/lib/unlang/foreach.c
src/lib/unlang/interpret.c
src/lib/unlang/interpret_synchronous.c
src/lib/unlang/limit.c
src/lib/unlang/map.c
src/lib/unlang/module.c
src/lib/unlang/module.h
src/lib/unlang/timeout.c
src/lib/unlang/tmpl.c
src/lib/unlang/tmpl.h
src/lib/unlang/tmpl_priv.h
src/lib/unlang/xlat.c
src/lib/unlang/xlat.h
src/lib/unlang/xlat_builtin.c
src/lib/unlang/xlat_eval.c
src/lib/unlang/xlat_expr.c
src/lib/unlang/xlat_pair.c
src/lib/unlang/xlat_priv.h
src/lib/unlang/xlat_purify.c
src/lib/util/calc.c
src/lib/util/calc.h
src/lib/util/dict_priv.h
src/lib/util/dlist.h
src/lib/util/pair.c
src/lib/util/print.c
src/lib/util/uri.c
src/lib/util/uri.h
src/lib/util/value.c
src/lib/util/value.h
src/modules/rlm_always/rlm_always.c
src/modules/rlm_cache/rlm_cache.c
src/modules/rlm_chap/rlm_chap.c
src/modules/rlm_cipher/rlm_cipher.c
src/modules/rlm_client/rlm_client.c
src/modules/rlm_csv/rlm_csv.c
src/modules/rlm_date/rlm_date.c
src/modules/rlm_delay/rlm_delay.c
src/modules/rlm_dict/rlm_dict.c
src/modules/rlm_escape/rlm_escape.c
src/modules/rlm_exec/rlm_exec.c
src/modules/rlm_icmp/rlm_icmp.c
src/modules/rlm_idn/rlm_idn.c
src/modules/rlm_json/rlm_json.c
src/modules/rlm_ldap/rlm_ldap.c
src/modules/rlm_mschap/rlm_mschap.c
src/modules/rlm_perl/rlm_perl.c
src/modules/rlm_redis/rlm_redis.c
src/modules/rlm_redis_ippool/rlm_redis_ippool.c
src/modules/rlm_rest/rlm_rest.c
src/modules/rlm_soh/rlm_soh.c
src/modules/rlm_sql/rlm_sql.c
src/modules/rlm_test/rlm_test.c
src/modules/rlm_unbound/rlm_unbound.c
src/modules/rlm_unpack/rlm_unpack.c
src/modules/rlm_yubikey/rlm_yubikey.c

index 845e332d4ac857a1ba6642eb42be11d7b36a8e36..086e3732485d19c65a072bb8f022fe00379f57af 100644 (file)
@@ -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;
 }
index 8acee68cfd0b43c37a921a5136176601173d4585..ca6f25df045facb5454e3e4b7d3fc57fe75b8e51 100644 (file)
@@ -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;
 }
index 09f9ba5c5704f30ff393a94cea4a66179736df22..2692fcf8f22b8c19a9aa843e02eab47f176a97f7 100644 (file)
@@ -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;
 
index 4979621fb66ebb8b19cb4fc447a1d020c1737166..d3b3f8f0ef5511069829b142352f4fcbc449952c 100644 (file)
@@ -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);
 
index 8f1a0c774612397dc3cefc03601c3437136364ac..6360e8d485bc797cd51ea952ed287e75384c857d 100644 (file)
@@ -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)
 {
index a2f397f0e557665108e3ed4324df64016eb71617..6d98c16a06c83f94f07c114d845df126af0b54c8 100644 (file)
@@ -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;
index 909e0542a36089c5d28caacf69cb75dcea1524ac..92213efcff0c6abd5d0933305f65cb549a1e8f99 100644 (file)
@@ -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);
index 6f82eb9c9daa662fdfe32cc274bc692c14e74314..24e20c3c4ac5a07205649455733e478a015be9e5 100644 (file)
@@ -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,
index 7d0af0f6242dff991770ea3ca784068a5c7e8281..40871f930bdce3a54ce1b3ea54a159a215b45abd 100644 (file)
@@ -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,
index 02fb01b565b0783477a469d7a06694721ec1c332..45757b524224e9c864662a11854e754e1aa22aae 100644 (file)
@@ -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);
index ef6ab84f9f39706d54033e4c3829604d7f942d71..46e731e73cb912ad976f58323589bbd9ea80297f 100644 (file)
@@ -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);
index 36ef7dffbbc2f5d9f79a5c6a91e56888ddf2ca25..c5b8f7471c5628e66831a6f9c23d5197a8d706c7 100644 (file)
@@ -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) {
index fed7e7f91db8a6799402617733a5d12fccf2ac8c..2a73859624acff42371b13964faf2f33c3682a46 100644 (file)
@@ -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);
 }
index bce2804745ef3acb24ed36b1dae5e5ca9da2f4fa..dc7160fcc46852be6cea15f8ca6de8d764adffe6 100644 (file)
@@ -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
 }
index 0ea84e2b6abb6472620a93e96138b2060f19c24b..6f02e327a505e4f468d052527a541aad84279d9f 100644 (file)
@@ -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);
 
index bb6b7930479222afea46b81c78820b397bbc429f..2191cfab2c94753973b1afe1883c8964f41edc38 100644 (file)
@@ -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:
index 82d1d0271559a651e870584e3b959cff011eabbb..d919c0471d54e38750012af3b3e8804f8ac04f3f 100644 (file)
@@ -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;
        }
index d8b65a15ae0437afcbb8709266207e15944d0577..8798db29949000d8dfea577addb6fe4fba2c9f88 100644 (file)
@@ -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);
 
index f1752cfccacd421746425941088d2528e20659c6..1b9b3fffa0cd1ad92868e409b432afb7cd835310 100644 (file)
@@ -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); \
index 998611f787424b18dcdd30849b02716fb708e75b..aaba8c3eff494cbd15fb976e5945338934b48ba2 100644 (file)
  */
 RCSID("$Id$")
 
+#include <freeradius-devel/protocol/freeradius/freeradius.internal.h>
 #include <freeradius-devel/server/base.h>
 #include <freeradius-devel/server/modpriv.h>
 #include <freeradius-devel/server/module_rlm.h>
-#include <freeradius-devel/protocol/freeradius/freeradius.internal.h>
+#include <freeradius-devel/util/time.h>
 
 #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;
index 537dcab1e5bf0e2b15eda4c43d08bb7090e07ded..b792c18c28cf76cf32dd72980ef9b3bb5fee1b68 100644 (file)
@@ -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 {
index ea2fcacd5221c4ba2442f359ac8b07c8b12fd775..239bb8cc720c2c2a307812bf483d859b756e0a1b 100644 (file)
@@ -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(&current->rhs.result);
+                       box = fr_value_box_list_head(&current->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(&current->rhs.result);
+                       box = fr_value_box_list_head(&current->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(&current->rhs.result);
+                       box = fr_value_box_list_head(&current->rhs.result);
                        single = true;
 
                } else {
                rhs_list:
-                       if (fr_dlist_num_elements(&current->rhs.result) == 1) {
-                               box = fr_dlist_head(&current->rhs.result);
+                       if (fr_value_box_list_num_elements(&current->rhs.result) == 1) {
+                               box = fr_value_box_list_head(&current->rhs.result);
                                single = true;
                        } else {
-                               box = fr_dcursor_init(&cursor, &current->rhs.result);
+                               box = fr_dcursor_init(&cursor, fr_value_box_list_dlist_head(&current->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(&current->rhs.result);
+       fr_value_box_list_talloc_free(&current->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(&current->parent->rhs.result, box);
+               fr_value_box_list_insert_tail(&current->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(&current->parent->rhs.result, box);
+                       fr_value_box_list_insert_tail(&current->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(&current->parent->rhs.result, &current->lhs.result);
+       fr_value_box_list_move(&current->parent->rhs.result, &current->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(&current->lhs.result));        /* Should have been consumed */
-       fr_assert(fr_dlist_empty(&current->rhs.result));        /* Should have been consumed */
+       fr_assert(fr_value_box_list_empty(&current->lhs.result));       /* Should have been consumed */
+       fr_assert(fr_value_box_list_empty(&current->rhs.result));       /* Should have been consumed */
 
        rcode = tmpl_to_values(state, &current->lhs, request, map->lhs);
        if (rcode < 0) return -1;
index e4efc60e728021e2413f7b041abd2ff2e5d018cb..1a4225ac6c3f54f2d17f47482e209473b46f88fd 100644 (file)
@@ -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;
index 4af5ea3208db98c04d1c4027f65f36c56f212e47..bc79ee50ad52a672816b4824e209621924b76487 100644 (file)
@@ -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;
 
index eecc80bc4659b0e43b998d3216f87396ae5a065f..baf7e22305dbd289194e85614f9ad8c4d9849bb9 100644 (file)
@@ -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;
 
index 90d78d8af5e68a3357184f5bb2262b3c130dea31..b2da33151af2545be2eb76f5c7ee137302b50751 100644 (file)
@@ -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.
index 9e80bbcaf2425259db975c7eadfe9b709a49677d..f771c084a15badb5b0757d90bc4035076fd8f6f3 100644 (file)
@@ -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:
index fb8fc89bf1c01541d0781169469aeccc83f68579..141cf1b140b81a04872faeb36d377291dd8191a2 100644 (file)
@@ -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,
index 6f0d52498b96a0503858b33b08613a37cb213776..caa94c5c80d5d5bd70e5a628dfd257dd2078a63e 100644 (file)
@@ -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,
index f7c8cc95fa3d80cfbec78200b4f7f6b5a2e7ff42..11922f2054dabb320ffe88a64ea530d3143fa3fb 100644 (file)
@@ -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.
index fd116c245605002e7db7d5b2d45f71489d8ca727..57dc99c5640e155304edcaebcbb9c4ae11b5c57a 100644 (file)
@@ -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;
index fbf145bf899cda32d187c82b41b9b4ffdf236a78..ff10f6592c34bdbbe708ab5915c25badf9de1e01 100644 (file)
@@ -30,8 +30,8 @@
 extern "C" {
 #endif
 
-#include <freeradius-devel/server/tmpl.h>
 #include <freeradius-devel/server/rcode.h>
+#include <freeradius-devel/server/tmpl.h>
 #include <freeradius-devel/unlang/tmpl.h>
 
 /** 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);
 
index f710250cd13f11b3a81707ccb9d319a2ca1ea1ed..a85f4ca242a80caf9e06d2dfb6eb3558f24d242e 100644 (file)
@@ -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
index bd76dde91a53171cde7027be46a4b474dfb47bd6..4452c03752358ae5bdfb49287341ff82d0296119 100644 (file)
@@ -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;
index 0d98d6aa5d342f544b9002fea38140046decb5f8..c76cff2afb33ff32883971e6c9c15c2b1a9ed86b 100644 (file)
@@ -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);
 
index d83dd5ad34e7dec80bf4a34ea71b36ccf450c840..69123af30d8e8e0bb5fed71c2bddc880e05dc09d 100644 (file)
@@ -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" =~ /^(?<name>.*)/) {
  */
 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;
index 4f060ac159d6e031d80cb4a573faa3e434eeb49f..56d1d9b3d8be69d67834f62291c7bd06c9785749 100644 (file)
@@ -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, "<INVALID>"));
 
@@ -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;
 }
index 59250361c13743b412bd8d03ab1d32c00849f40f..5a81084539786b4e2e07bb3fa7980916dcc7841b 100644 (file)
@@ -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;
index 2351967f9f7048008cc78cf8414102426121f5eb..fca3ea02b03c5ed5ab7fef6a88a18a56301fce66 100644 (file)
@@ -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) {
index 274829429a80c4acea12e16c4d5306a20f3bb5ad..44a40348e9289061fb8e83161bc2675d116a1997 100644 (file)
@@ -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
  */
index edf5e69cd156fc105dfd31394cecbd19214ee202..7338b9bda3175cafccd8d8a4d5cd87cf95e17d0f 100644 (file)
@@ -30,12 +30,12 @@ RCSID("$Id$")
 #include <freeradius-devel/unlang/xlat_priv.h>
 #include <freeradius-devel/util/calc.h>
 
-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;
index 660b21bc239143dd15b1db03edfbc134775b613e..fbef36c02a8428e828310c3b6eecb5c91875622a 100644 (file)
@@ -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;
 
index a28fb0c5e42fb13bf15c889bf43dd04133d84a7a..cc82f7044cf15c816af8b8a3a63b26632c2c67f7 100644 (file)
@@ -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
 }
index 99f3cfd7ebb8d15b08d8cfaad8937da1387d6950..edb543ea78b4f86178c1adfbb33aeffb1fd2579f 100644 (file)
@@ -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);
index 5033a50a7067bdae70f3512534e72c323a1ed129..86cbb2f647570febd0cd5d7aef54264bd93c9058 100644 (file)
@@ -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 <name>_foreach(_list_head, _iter) fr_dlist_foreach(<name>_dlist_head(_list_head), <element_type>, _iter)
+ *  #define <name>_foreach_safe(_list_head, _iter) fr_dlist_foreach_safe(<name>_dlist_head(_list_head), <element_type>, _iter)
+ *  #define <name>_verify(_list_head) _<name>_verify(__FILE__, __LINE__, _list_head)
+ */
+
 #ifdef __cplusplus
 }
 #endif
index 09f6cd093647cc2b8cfd1ebec549944840533cbf..02514671411c3ad0f145ee6da7d3ece6f4b87a87 100644 (file)
@@ -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;
index 2a0498a143f49649f86b7af1a8466df9a74bdb20..78404f45bfdfb07abdb930c1a980da276a9a3eed 100644 (file)
@@ -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)");
index 7ed1df776e5362f5fc1a75b9a4084ef24688b9cd..3a711586fbf481202faf5c7eb19c6caf851ed455 100644 (file)
@@ -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;
 }
index e634d87cb71dd36d1f5cd28d19c714d816a6ebc1..20b60150af9f0071508c99553a9e59a169d3af6d 100644 (file)
@@ -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
 }
index df2f1e18064172e9a6b7766972409f14146f1cbd..85943383237a95e8274251a22f490516c6c267cb 100644 (file)
@@ -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:
index 413a523e40c6c32f23d3260b08fcdb8204df3356..47e973b9e6c401af403d1037d51dcc3105e0ad94 100644 (file)
@@ -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
index 1423fa9da359ab4893d25705003e043c5bf427eb..174f200045b32cf7b734f5d6ab04106214264472 100644 (file)
@@ -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
index 61ecd5229a0ce82c4b6dfef261b64dd58cd7a3f5..13fda853e0f664eef00ff9685e0fd84ced2f2d12 100644 (file)
@@ -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;
index d4dc20dd499869f351035780484c15d5b5ee944d..0f5922a9ae592844218b7f018dc06359a7404f92 100644 (file)
@@ -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,
index c48f3ec5e474b8a41d6cbef9ffa87b8ad5027a4a..36ba17d574af55e31f1ccf376fae5e0f20b54222 100644 (file)
@@ -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)) {
index ad0362bb3861811651fd5a20caede5290c7cdf69..20a800ccd45410a5793b43ebc2d16806056926df 100644 (file)
@@ -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) {
index 0c8f8c33b32bc5e5a06538d297bacb54198dee29..528a17884357d83089f14c7251cdc71c2acaae4e 100644 (file)
@@ -32,7 +32,7 @@ RCSID("$Id$")
 #include <freeradius-devel/server/map_proc.h>
 
 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)");
index ce51a2423ee71bdab247057ba647b35c6eb4b84e..79cd2e5efe6fd18715ec31bdad58632a8528a5fc 100644 (file)
@@ -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));
 
index a914acc189db4a2decf9c9770577f094804d0198..ecd59b70900b77c0440b73e49d9c6de2121627b8 100644 (file)
@@ -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
index e9975b96a0e27caed5644e1ac9b4448a2a65b892..13f34916413963563fb6868158713808d5284f12 100644 (file)
@@ -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;
index cf11bf74cf682cae165db580df2152eb910d44e2..f542f19eaea9847f4dc1594788c4187062fc45d3 100644 (file)
@@ -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;
index 3e20b819442c22f4b7ac740b5ec732b580bde095..b6f578d3f7f72c6612f7f2543ca1146d9f3125bc 100644 (file)
@@ -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),
index f293a52a7c7c92bb4155fb6a6f8aec790b32611e..1645943bf36b424e4ae7348dee8e4c8e670d4382 100644 (file)
@@ -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.
index 65ab6a2a08f510fa49eedd84a102e500b47d0d6f..dee08da448dbb84ce321e3b5bd416c97b7227b16 100644 (file)
@@ -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) {
index a0f7d9b2cb8cfa8bd9be6284613dd5451c93b0d5..565bbd65e070e402391cf712d4716d9ea556aec0 100644 (file)
@@ -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)");
index f4973ba5467d23fd956ab78c7e7722d8e30e0a96..632edc8fd820e286f518a04790fea7743b7a03b1 100644 (file)
@@ -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?
index 5ed1d064d33201dc1a07b5f09524034941fce587..b5b9193bbe636491c891518f6aeccbdc770ab7b4 100644 (file)
@@ -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;
 
index e220fa2bba05f8a4880b93d44afa5686c9bca326..2649c744ad044f44524dbbb1c9352fe89e82c43d 100644 (file)
@@ -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;
index 4c16ac44b0b002d12d6f766e018d51b63ea0cc03..dce4127b8d25007f364b77f16102e04e622325f4 100644 (file)
@@ -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();
index bcb0665e7b5a9412e52ec14dad4579af6f3ed11c..75490ec85534d1d919f9afc55de2a193d7adc745 100644 (file)
@@ -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 */
index 978cf92a75ca3044cd752e7fd4069dc7b19fa859..bfd6d14b51a300b5c98d90ae327f0edcc90d4a73 100644 (file)
@@ -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,
index a9adf013b7a86b9b1412580bf5d578dc5079e7a9..11fabb6e4dfe6523a93d6d04023089fe9c7aed71 100644 (file)
@@ -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;
index 6ce8e036af511ce1de968163640b51d42488cf17..d7c8a754526795bbfd05a3d5c6b5ca1fdd997715 100644 (file)
@@ -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)
 
index a318b16eb74df04ef67606453c10e0071e7f2da1..394b54bf1b3e53a8121a8fa661bb44cf116c75e3 100644 (file)
@@ -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) {
index bf4dca854dbf9191f6f22ddeb1dcbfb52a612a07..495b6f0e185793b30c868409c287940028de5082 100644 (file)
@@ -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) {
index ffb4fac8572742839ce869600578950861991b8c..22344924af79f32853ceeae8d70b80cd4ad8e683 100644 (file)
@@ -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)) {
index e8c1e83ddf6d3484fcb756841593cb7a4c7bdcbf..e09c2e596b909e0792cb13dfb2400f474bcba407 100644 (file)
@@ -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);
 
        /*