]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Cleanup rbtree functions
authorArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 1 Mar 2021 20:21:03 +0000 (20:21 +0000)
committerArran Cudbard-Bell <a.cudbardb@freeradius.org>
Mon, 1 Mar 2021 20:21:03 +0000 (20:21 +0000)
Bump return and element count to uint64_t

40 files changed:
src/bin/radsniff.c
src/lib/io/master.c
src/lib/io/network.c
src/lib/io/worker.c
src/lib/redis/cluster.c
src/lib/server/cf_file.c
src/lib/server/cf_file.h
src/lib/server/cf_util.c
src/lib/server/client.c
src/lib/server/dl_module.c
src/lib/server/main_config.c
src/lib/server/map_proc.c
src/lib/server/method.c
src/lib/server/module.c
src/lib/server/state.c
src/lib/server/state.h
src/lib/server/trigger.c
src/lib/server/virtual_servers.c
src/lib/tls/engine.c
src/lib/unlang/xlat_builtin.c
src/lib/unlang/xlat_inst.c
src/lib/util/dl.c
src/lib/util/event.c
src/lib/util/event.h
src/lib/util/rbtree.c
src/lib/util/rbtree.h
src/modules/proto_bfd/proto_bfd.c
src/modules/proto_ldap_sync/sync.c
src/modules/rlm_cache/drivers/rlm_cache_rbtree/rlm_cache_rbtree.c
src/modules/rlm_cache/rlm_cache.h
src/modules/rlm_csv/rlm_csv.c
src/modules/rlm_files/rlm_files.c
src/modules/rlm_icmp/rlm_icmp.c
src/modules/rlm_radius/track.c
src/modules/rlm_securid/mem.c
src/modules/rlm_sigtran/sccp.c
src/modules/rlm_stats/rlm_stats.c
src/protocols/radius/list.c
src/protocols/radius/list.h
src/tests/rbmonkey.c

index 4548144b9d517510f5ec483bbf6a08c21f9bf05b..ec7ca0d14f13c6b35d45ce31e536bdecd36fbfd3 100644 (file)
@@ -980,12 +980,12 @@ static int _request_free(rs_request_t *request)
         *      something has gone very badly wrong.
         */
        if (request->in_request_tree) {
-               ret = rbtree_deletebydata(request_tree, request);
+               ret = rbtree_delete_by_data(request_tree, request);
                RS_ASSERT(ret);
        }
 
        if (request->in_link_tree) {
-               ret = rbtree_deletebydata(link_tree, request);
+               ret = rbtree_delete_by_data(link_tree, request);
                RS_ASSERT(ret);
        }
 
@@ -1390,7 +1390,7 @@ static void rs_packet_process(uint64_t count, rs_event_t *event, struct pcap_pkt
        {
                /* look for a matching request and use it for decoding */
                search.expect = packet;
-               original = rbtree_finddata(request_tree, &search);
+               original = rbtree_find_data(request_tree, &search);
 
                /*
                 *      Verify this code is allowed
@@ -1608,8 +1608,8 @@ static void rs_packet_process(uint64_t count, rs_event_t *event, struct pcap_pkt
                if (!fr_pair_list_empty(&search.link_vps)) {
                        rs_request_t *tuple;
 
-                       original = rbtree_finddata(link_tree, &search);
-                       tuple = rbtree_finddata(request_tree, &search);
+                       original = rbtree_find_data(link_tree, &search);
+                       tuple = rbtree_find_data(request_tree, &search);
 
                        /*
                         *      If the packet we matched using attributes is not the same
@@ -1623,7 +1623,7 @@ static void rs_packet_process(uint64_t count, rs_event_t *event, struct pcap_pkt
                 *      Detect duplicates using the normal 5-tuple of src/dst ips/ports id
                 */
                } else {
-                       original = rbtree_finddata(request_tree, &search);
+                       original = rbtree_find_data(request_tree, &search);
                        if (original && (memcmp(original->expect->vector, packet->vector,
                                                sizeof(original->expect->vector)) != 0)) {
                                /*
@@ -1673,7 +1673,7 @@ static void rs_packet_process(uint64_t count, rs_event_t *event, struct pcap_pkt
 
                        /* Request may need to be reinserted as the 5 tuple of the response may of changed */
                        if (rs_packet_cmp(original, &search) != 0) {
-                               rbtree_deletebydata(request_tree, original);
+                               rbtree_delete_by_data(request_tree, original);
                        }
 
                        /* replace expected packets and vps */
index da066ea9b18a8f46509621fc0eb580e8e1fda4ce..a94a27fe17c423d0019a5d3543a5978a0280ee1f 100644 (file)
@@ -158,9 +158,9 @@ static int track_free(fr_io_track_t *track)
 static int track_dedup_free(fr_io_track_t *track)
 {
        fr_assert(track->client->table != NULL);
-       fr_assert(rbtree_finddata(track->client->table, track) != NULL);
+       fr_assert(rbtree_find_data(track->client->table, track) != NULL);
 
-       if (!rbtree_deletebydata(track->client->table, track)) {
+       if (!rbtree_delete_by_data(track->client->table, track)) {
                fr_assert(0);
        }
 
@@ -895,7 +895,7 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client,
        /*
         *      No existing duplicate.  Return the new tracking entry.
         */
-       old = rbtree_finddata(client->table, track);
+       old = rbtree_find_data(client->table, track);
        if (!old) goto do_insert;
 
        fr_assert(old->client == client);
@@ -964,7 +964,7 @@ static fr_io_track_t *fr_io_track_add(fr_io_client_t *client,
        } else {
                fr_assert(client == old->client);
 
-               if (!rbtree_deletebydata(client->table, old)) {
+               if (!rbtree_delete_by_data(client->table, old)) {
                        fr_assert(0);
                }
                if (old->ev) (void) fr_event_timer_delete(&old->ev);
index 3db18144b3a92f5ae95c7ea358766a06944f3c28..abf97efda062c1b8075aa87d5ce4cdca12a81f63 100644 (file)
@@ -243,7 +243,7 @@ int fr_network_socket_delete(fr_network_t *nr, fr_listen_t *li)
 {
        fr_network_socket_t *s;
 
-       s = rbtree_finddata(nr->sockets, &(fr_network_socket_t){ .listen = li });
+       s = rbtree_find_data(nr->sockets, &(fr_network_socket_t){ .listen = li });
        if (!s) return -1;
 
        fr_network_socket_dead(nr, s);
@@ -296,7 +296,7 @@ void fr_network_listen_read(fr_network_t *nr, fr_listen_t *li)
        (void) talloc_get_type_abort(nr, fr_network_t);
        (void) talloc_get_type_abort_const(li, fr_listen_t);
 
-       s = rbtree_finddata(nr->sockets, &(fr_network_socket_t){ .listen = li });
+       s = rbtree_find_data(nr->sockets, &(fr_network_socket_t){ .listen = li });
        if (!s) return;
 
        /*
@@ -1045,8 +1045,8 @@ static int _network_socket_free(fr_network_socket_t *s)
        fr_network_t *nr = s->nr;
        fr_channel_data_t *cd;
 
-       rbtree_deletebydata(nr->sockets, s);
-       rbtree_deletebydata(nr->sockets_by_num, s);
+       rbtree_delete_by_data(nr->sockets, s);
+       rbtree_delete_by_data(nr->sockets_by_num, s);
 
        fr_event_fd_delete(nr->el, s->listen->fd, s->filter);
 
@@ -1283,7 +1283,7 @@ static void fr_network_inject_callback(void *ctx, void const *data, size_t data_
        fr_assert(data_size == sizeof(my_inject));
 
        memcpy(&my_inject, data, data_size);
-       s = rbtree_finddata(nr->sockets, &(fr_network_socket_t){ .listen = my_inject.listen });
+       s = rbtree_find_data(nr->sockets, &(fr_network_socket_t){ .listen = my_inject.listen });
        if (!s) {
                talloc_free(my_inject.packet); /* MUST be it's own TALLOC_CTX */
                return;
@@ -1345,7 +1345,7 @@ static void fr_network_post_event(UNUSED fr_event_list_t *el, UNUSED fr_time_t n
                 *      @todo - cache this somewhere so we don't need
                 *      to do an rbtree lookup for every packet.
                 */
-               s = rbtree_finddata(nr->sockets, &(fr_network_socket_t){ .listen = li });
+               s = rbtree_find_data(nr->sockets, &(fr_network_socket_t){ .listen = li });
 
                /*
                 *      This shouldn't happen, but be safe...
@@ -1415,7 +1415,8 @@ int fr_network_destroy(fr_network_t *nr)
                size_t                  len;
                size_t                  i;
 
-               len = rbtree_flatten(nr, (void ***)&sockets, nr->sockets, RBTREE_IN_ORDER);
+               if (rbtree_flatten_inorder(nr, (void ***)&sockets, nr->sockets) < 0) return -1;
+               len = talloc_array_length(sockets);
 
                for (i = 0; i < len; i++) talloc_free(sockets[i]);
 
@@ -1744,7 +1745,7 @@ static int cmd_stats_self(FILE *fp, UNUSED FILE *fp_err, void *ctx, UNUSED fr_cm
        fprintf(fp, "count.out\t%" PRIu64 "\n", nr->stats.out);
        fprintf(fp, "count.dup\t%" PRIu64 "\n", nr->stats.dup);
        fprintf(fp, "count.dropped\t%" PRIu64 "\n", nr->stats.dropped);
-       fprintf(fp, "count.sockets\t%u\n", rbtree_num_elements(nr->sockets));
+       fprintf(fp, "count.sockets\t%"PRIu64"\n", rbtree_num_elements(nr->sockets));
 
        return 0;
 }
@@ -1774,7 +1775,7 @@ static int cmd_stats_socket(FILE *fp, FILE *fp_err, void *ctx, fr_cmd_info_t con
        fr_network_t const *nr = ctx;
        fr_network_socket_t *s;
 
-       s = rbtree_finddata(nr->sockets_by_num, &(fr_network_socket_t){ .number = info->box[0]->vb_uint32 });
+       s = rbtree_find_data(nr->sockets_by_num, &(fr_network_socket_t){ .number = info->box[0]->vb_uint32 });
        if (!s) {
                fprintf(fp_err, "No such socket number '%s'.\n", info->argv[0]);
                return -1;
index d0ed81cb5cfbb768f7a6663525fdcdc8df4671a9..e1ecdef74ca558fede59f03f80bb1c13fcb6dae8 100644 (file)
@@ -548,7 +548,7 @@ static void worker_stop_request(fr_worker_t *worker, request_t *request, fr_time
         */
        if (request->time_order_id >= 0) (void) fr_heap_extract(worker->time_order, request);
        if (request->runnable_id >= 0) (void) fr_heap_extract(worker->runnable, request);
-       if (request->async->listen && request->async->listen->track_duplicates) rbtree_deletebydata(worker->dedup, request);
+       if (request->async->listen && request->async->listen->track_duplicates) rbtree_delete_by_data(worker->dedup, request);
 
 #ifndef NDEBUG
        request->async->process = NULL;
@@ -781,7 +781,7 @@ nak:
        if (request->async->listen->track_duplicates) {
                request_t *old;
 
-               old = rbtree_finddata(worker->dedup, request);
+               old = rbtree_find_data(worker->dedup, request);
                if (!old) {
                        /*
                         *      Ignore duplicate packets where we've
@@ -939,7 +939,7 @@ static void worker_run_request(fr_worker_t *worker, fr_time_t start)
                         *      then, only some of the time.
                         */
                        if (request_is_external(request) && request->async->listen->track_duplicates) {
-                               (void) rbtree_deletebydata(worker->dedup, request);
+                               (void) rbtree_delete_by_data(worker->dedup, request);
                        }
 
                        now = fr_time();
index 4a2ab2394c294582af944c2244ab92d44d1c62d1..469c8ec3348d192f11e486734c3bba1eca551a0c 100644 (file)
@@ -553,7 +553,7 @@ do { \
 do { \
        (_node)->is_active = false; \
        (_node)->is_master = false; \
-       rbtree_deletebydata(cluster->used_nodes, _node); \
+       rbtree_delete_by_data(cluster->used_nodes, _node); \
        fr_fifo_push(cluster->free_nodes, _node); \
 } while (0)
 
@@ -601,7 +601,7 @@ do { \
                memset(&tmpl_slot, 0, sizeof(tmpl_slot));
 
                SET_ADDR(find.addr, map->element[2]);
-               found = rbtree_finddata(cluster->used_nodes, &find);
+               found = rbtree_find_data(cluster->used_nodes, &find);
                if (found) {
                        active[found->id] = true;
                        goto reuse_master_node;
@@ -653,7 +653,7 @@ do { \
                 */
                for (j = 3; (j < map->elements); j++) {
                        SET_ADDR(find.addr, map->element[j]);
-                       found = rbtree_finddata(cluster->used_nodes, &find);
+                       found = rbtree_find_data(cluster->used_nodes, &find);
                        if (found) {
                                active[found->id] = true;
                                goto next;
@@ -728,7 +728,7 @@ do { \
 
                if (cluster->node[i].is_active) {
                        /* Sanity check for duplicates that are active */
-                       found = rbtree_finddata(cluster->used_nodes, &cluster->node[i]);
+                       found = rbtree_find_data(cluster->used_nodes, &cluster->node[i]);
                        fr_assert(found);
                        fr_assert(found->is_active);
                        fr_assert(found->id == i);
@@ -1119,7 +1119,7 @@ static fr_redis_cluster_rcode_t cluster_redirect(fr_redis_cluster_node_t **out,
         *      If we have already have a pool for the
         *      host we were redirected to, use that.
         */
-       found = rbtree_finddata(cluster->used_nodes, &find);
+       found = rbtree_find_data(cluster->used_nodes, &find);
        if (found) {
                /* We have the new pool, don't need to hold the lock */
                pthread_mutex_unlock(&cluster->mutex);
@@ -1699,7 +1699,7 @@ fr_redis_rcode_t fr_redis_cluster_state_init(fr_redis_cluster_state_t *state, fr
        fr_redis_cluster_node_t                 *node;
        fr_redis_cluster_key_slot_t const       *key_slot;
        uint8_t                                 first, i;
-       int                                     used_nodes;
+       uint64_t                                used_nodes;
 
        fr_assert(cluster);
        fr_assert(state);
@@ -2025,7 +2025,7 @@ int fr_redis_cluster_pool_by_node_addr(fr_pool_t **pool, fr_redis_cluster_t *clu
        find.addr.inet.dst_port = node_addr->inet.dst_port;
 
        pthread_mutex_lock(&cluster->mutex);
-       found = rbtree_finddata(cluster->used_nodes, &find);
+       found = rbtree_find_data(cluster->used_nodes, &find);
        if (!found) {
                fr_redis_cluster_node_t *spare;
                char buffer[INET6_ADDRSTRLEN];
@@ -2083,7 +2083,7 @@ int fr_redis_cluster_pool_by_node_addr(fr_pool_t **pool, fr_redis_cluster_t *clu
 ssize_t fr_redis_cluster_node_addr_by_role(TALLOC_CTX *ctx, fr_socket_t *out[],
                                           fr_redis_cluster_t *cluster, bool is_master, bool is_slave)
 {
-       size_t in_use = rbtree_num_elements(cluster->used_nodes);
+       uint64_t                        in_use = rbtree_num_elements(cluster->used_nodes);
        fr_rb_tree_iter_inorder_t       iter;
        fr_redis_cluster_node_t         *node;
        uint8_t                         count;
@@ -2220,7 +2220,7 @@ fr_redis_cluster_t *fr_redis_cluster_alloc(TALLOC_CTX *ctx,
        CONF_PAIR               *cp;
        int                     af = AF_UNSPEC;         /* AF of first server */
 
-       int                     num_nodes;
+       uint64_t                num_nodes;
        fr_redis_cluster_t      *cluster;
 
        fr_assert(triggers_enabled || !trigger_prefix);
index d22cec0b0e9e47f9780ed467c5fc190beb20670d..7df3f28ee86d880a279607a2f1a4ada1e3f46a35 100644 (file)
@@ -536,7 +536,7 @@ static int cf_file_open(CONF_SECTION *cs, char const *filename, bool from_dir, F
 
                if (stat(filename, &my_file.buf) < 0) goto error;
 
-               file = rbtree_finddata(tree, &my_file);
+               file = rbtree_find_data(tree, &my_file);
 
                /*
                 *      The file was previously read by including it
@@ -2373,55 +2373,6 @@ void cf_file_check_user(uid_t uid, gid_t gid)
        if (gid != 0) conf_check_gid = gid;
 }
 
-/*
- *     See if any of the files have changed.
- */
-int cf_file_changed(CONF_SECTION *cs, fr_rb_walker_t callback)
-{
-       CONF_SECTION                    *top, *modules;
-       rbtree_t                        *tree;
-       cf_file_t                       *file;
-       int                             rcode;
-       struct stat                     buf;
-       fr_rb_tree_iter_inorder_t       iter;
-
-       top = cf_root(cs);
-       tree = cf_data_value(cf_data_find(top, rbtree_t, "filename"));
-       if (!tree) return CF_FILE_ERROR;
-
-       rcode = CF_FILE_NONE;
-       modules = cf_section_find(cs, "modules", NULL);
-
-       for (file = rbtree_iter_init_inorder(&iter, tree);
-            file;
-            file = rbtree_iter_next_inorder(&iter)) {
-               /*
-                *      The file doesn't exist or we can no longer read it.
-                */
-               if (stat(file->filename, &buf) < 0) {
-                       rcode = CF_FILE_ERROR;
-                       rbtree_iter_done(&iter);
-                       break;
-               }
-
-               /*
-                *      The file changed, we'll need to re-read it.
-                */
-               if (buf.st_mtime != file->buf.st_mtime) {
-                       if (callback(modules, file->cs)) {
-                               rcode |= CF_FILE_MODULE;
-                               DEBUG3("HUP: Changed module file %s", file->filename);
-                       } else {
-                               DEBUG3("HUP: Changed config file %s", file->filename);
-                               rcode |= CF_FILE_CONFIG;
-                       }
-               }
-       }
-
-       return rcode;
-}
-
-
 static char const parse_tabs[] = "                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ";
 
 static ssize_t cf_string_write(FILE *fp, char const *string, size_t len, fr_token_t t)
index 847db1227d97fef51025526ef6e99f43be2a1087..7d88cc3b05d629e3a4d11da55bf082e02e322e21 100644 (file)
@@ -53,7 +53,6 @@ void          cf_file_free(CONF_SECTION *cs);
 
 bool           cf_file_check(CONF_SECTION *cs, char const *filename, bool check_perms);
 void           cf_file_check_user(uid_t uid, gid_t gid);
-int            cf_file_changed(CONF_SECTION *cs, fr_rb_walker_t callback);
 
 /*
  *     Config file writing
index 30c8ac48f887196bf6688ea0090ade3835b62d12..c2bd96b7ce519d575e22faa71b667bd7ac1ea80a 100644 (file)
@@ -133,12 +133,12 @@ static CONF_ITEM *cf_find(CONF_ITEM const *parent, CONF_ITEM_TYPE type, char con
        /*
         *      No ident2, use the ident1 tree.
         */
-       if (IS_WILDCARD(ident2)) return rbtree_finddata(parent->ident1, find);
+       if (IS_WILDCARD(ident2)) return rbtree_find_data(parent->ident1, find);
 
        /*
         *      Both ident1 and ident2 use the ident2 tree.
         */
-       return rbtree_finddata(parent->ident2, find);
+       return rbtree_find_data(parent->ident2, find);
 }
 
 /** Return the next child that's of the specified type with the specified identifiers
@@ -411,14 +411,14 @@ CONF_ITEM *_cf_item_remove(CONF_ITEM *parent, CONF_ITEM *child)
        fr_dlist_remove(&parent->children, found);
        if (!fr_cond_assert(found == child)) return NULL;
 
-       in_ident1 = (rbtree_finddata(parent->ident1, child) == child);
-       if (in_ident1 && (!rbtree_deletebydata(parent->ident1, child))) {
+       in_ident1 = (rbtree_find_data(parent->ident1, child) == child);
+       if (in_ident1 && (!rbtree_delete_by_data(parent->ident1, child))) {
                fr_assert(0);
                return NULL;
        }
 
-       in_ident2 = (rbtree_finddata(parent->ident2, child) == child);
-       if (in_ident2 && (!rbtree_deletebydata(parent->ident2, child))) {
+       in_ident2 = (rbtree_find_data(parent->ident2, child) == child);
+       if (in_ident2 && (!rbtree_delete_by_data(parent->ident2, child))) {
                fr_assert(0);
                return NULL;
        }
@@ -2068,8 +2068,8 @@ void _cf_debug(CONF_ITEM const *ci)
        DEBUG("  next          : %p", fr_dlist_next(&ci->parent->children, ci));
        DEBUG("  parent        : %p", ci->parent);
        DEBUG("  children      : %s", !fr_dlist_empty(&ci->children) ? "yes" : "no");
-       DEBUG("  ident1 tree   : %p (%entries)", ci->ident1, ci->ident1 ? rbtree_num_elements(ci->ident1) : 0);
-       DEBUG("  ident2 tree   : %p (%entries)", ci->ident2, ci->ident2 ? rbtree_num_elements(ci->ident2) : 0);
+       DEBUG("  ident1 tree   : %p (%" PRIu64 "entries)", ci->ident1, ci->ident1 ? rbtree_num_elements(ci->ident1) : 0);
+       DEBUG("  ident2 tree   : %p (%" PRIu64 "entries)", ci->ident2, ci->ident2 ? rbtree_num_elements(ci->ident2) : 0);
 
        if (fr_dlist_empty(&ci->children)) return;
 
@@ -2081,8 +2081,8 @@ void _cf_debug(CONF_ITEM const *ci)
        while ((child = fr_dlist_next(&ci->children, child))) {
                char const *in_ident1, *in_ident2;
 
-               in_ident1 = rbtree_finddata(ci->ident1, child) == child? "in ident1 " : "";
-               in_ident2 = rbtree_finddata(ci->ident2, child) == child? "in ident2 " : "";
+               in_ident1 = rbtree_find_data(ci->ident1, child) == child? "in ident1 " : "";
+               in_ident2 = rbtree_find_data(ci->ident2, child) == child? "in ident2 " : "";
 
                switch (child->type) {
                case CONF_ITEM_SECTION:
index c17a98c525d3ff7ebf534265154c2cc962027fb9..56a5991ac8b2182a474af884eb3237098afdaefe 100644 (file)
@@ -293,7 +293,7 @@ bool client_add(RADCLIENT_LIST *clients, RADCLIENT *client)
                }
        }
 
-       old = rbtree_finddata(clients->tree[client->ipaddr.prefix], client);
+       old = rbtree_find_data(clients->tree[client->ipaddr.prefix], client);
 #endif
        if (old) {
                /*
@@ -362,7 +362,7 @@ void client_delete(RADCLIENT_LIST *clients, RADCLIENT *client)
 
        if (!clients->tree[client->ipaddr.prefix]) return;
 
-       (void) rbtree_deletebydata(clients->tree[client->ipaddr.prefix], client);
+       (void) rbtree_delete_by_data(clients->tree[client->ipaddr.prefix], client);
 #endif
 }
 
@@ -408,7 +408,7 @@ RADCLIENT *client_find(RADCLIENT_LIST const *clients, fr_ipaddr_t const *ipaddr,
 
                my_client.ipaddr = *ipaddr;
                fr_ipaddr_mask(&my_client.ipaddr, i);
-               client = rbtree_finddata(clients->tree[i], &my_client);
+               client = rbtree_find_data(clients->tree[i], &my_client);
                if (client) {
                        return client;
                }
index 989113ee570210f4eccdc67216f741234b8a44c7..4022a73af8bbc1c107a3bbb1de394e4878ff36b1 100644 (file)
@@ -203,7 +203,7 @@ dl_module_inst_t const *dl_module_instance_by_data(void const *data)
 
        if (dl_inst_cache.data == data) return dl_inst_cache.inst;
 
-       return rbtree_finddata(dl_module_loader->inst_data_tree, &(dl_module_inst_t){ .data = UNCONST(void *, data) });
+       return rbtree_find_data(dl_module_loader->inst_data_tree, &(dl_module_inst_t){ .data = UNCONST(void *, data) });
 }
 
 /** Lookup instance name via instance data
@@ -310,7 +310,7 @@ static int _dl_module_free(dl_module_t *dl_module)
        }
 
        if (dl_module->in_tree) {
-               rbtree_deletebydata(dl_module_loader->module_tree, dl_module);
+               rbtree_delete_by_data(dl_module_loader->module_tree, dl_module);
                dl_module->in_tree = false;
        }
 
@@ -366,7 +366,7 @@ dl_module_t const *dl_module(CONF_SECTION *conf, dl_module_t const *parent, char
        /*
         *      If the module's already been loaded, increment the reference count.
         */
-       dl_module = rbtree_finddata(dl_module_loader->module_tree,
+       dl_module = rbtree_find_data(dl_module_loader->module_tree,
                                    &(dl_module_t){ .dl = &(dl_t){ .name = module_name }});
        if (dl_module) {
                talloc_free(module_name);
@@ -459,7 +459,7 @@ static int _dl_module_instance_free(dl_module_inst_t *dl_inst)
          *     Remove this instance from the tracking tree.
          */
         fr_assert(dl_module_loader != NULL);
-        rbtree_deletebydata(dl_module_loader->inst_data_tree, dl_inst);
+        rbtree_delete_by_data(dl_module_loader->inst_data_tree, dl_inst);
 
         /*
          *     Decrements the reference count. The module object
index 5ba51db4af9bbf9dd61cd6b4b8995ddd677e7c02..3b777bd9d8ef7c7885b2119cb0daf8a93b5d7fb2 100644 (file)
@@ -1285,18 +1285,5 @@ void main_config_hup(main_config_t *config)
        }
        last_hup = when;
 
-#if 0
-       rcode = cf_file_changed(cs_cache->cs, hup_callback);
-       if (rcode == CF_FILE_NONE) {
-               INFO("HUP - No files changed.  Ignoring");
-               return;
-       }
-
-       if (rcode == CF_FILE_ERROR) {
-               INFO("HUP - Cannot read configuration files.  Ignoring");
-               return;
-       }
-#endif
-
        INFO("HUP - NYI in version 4"); /* Not yet implemented in v4 */
 }
index 91164107d4dd3d89d33a3916a1a84ace5e4e04ec..ece52d660213d988cd8966f2f2a91f235baac28f 100644 (file)
@@ -61,10 +61,10 @@ static int _map_proc_talloc_free(map_proc_t *proc)
        strlcpy(find.name, proc->name, sizeof(find.name));
        find.length = strlen(find.name);
 
-       found = rbtree_finddata(map_proc_root, &find);
+       found = rbtree_find_data(map_proc_root, &find);
        if (!found) return 0;
 
-       rbtree_deletebydata(map_proc_root, found);
+       rbtree_delete_by_data(map_proc_root, found);
 
        return 0;
 }
@@ -90,7 +90,7 @@ map_proc_t *map_proc_find(char const *name)
        strlcpy(find.name, name, sizeof(find.name));
        find.length = strlen(find.name);
 
-       return rbtree_finddata(map_proc_root, &find);
+       return rbtree_find_data(map_proc_root, &find);
 }
 
 /** Register a map processor
index 1626a34ff6341411694e8fc77640bca6ea1245a9..10a43f0627fcdb4f6a9f50b5d4caa7fb7b394816 100644 (file)
@@ -162,7 +162,7 @@ int module_method_insert(module_method_set_t *set, module_method_id_t id, module
 {
        module_method_entry_t   *found, find = { .id = id, .method = method };
 
-       found = rbtree_finddata(set->tree, &find);
+       found = rbtree_find_data(set->tree, &find);
        if (found) {
                if (unlikely(found->method != method)) {
                        fr_strerror_printf("Conflict for method id %u (old %p vs new %p)",
@@ -198,7 +198,7 @@ module_method_t     module_method_find(module_method_set_t *set, module_method_id_t
 {
        module_method_entry_t   *found;
 
-       found = rbtree_finddata(set->tree, &(module_method_entry_t){ .id = id });
+       found = rbtree_find_data(set->tree, &(module_method_entry_t){ .id = id });
        if (!found) return NULL;
 
        return found->method;
index 7ce86a9c6679ac91c590cbe3c8ed95cb59e5b932..5f6a68c0c4822d6f20ceefd3925b58bbe2b4aad6 100644 (file)
@@ -646,7 +646,7 @@ module_instance_t *module_by_name(module_instance_t const *parent, char const *a
        inst_name = asked_name;
        if (inst_name[0] == '-') inst_name++;
 
-       inst = rbtree_finddata(module_instance_name_tree,
+       inst = rbtree_find_data(module_instance_name_tree,
                               &(module_instance_t){
                                        .dl_inst = &(dl_module_inst_t){ .parent = parent ? parent->dl_inst : NULL },
                                        .name = inst_name
@@ -1051,7 +1051,7 @@ module_instance_t *module_by_data(void const *data)
 {
        module_instance_t *mi;
 
-       mi = rbtree_finddata(module_instance_data_tree,
+       mi = rbtree_find_data(module_instance_data_tree,
                             &(module_instance_t){
                                .dl_inst = &(dl_module_inst_t){ .data = UNCONST(void *, data) },
                             });
@@ -1412,8 +1412,8 @@ static int _module_instance_free(module_instance_t *mi)
 {
        DEBUG3("Freeing %s (%p)", mi->name, mi);
 
-       if (mi->in_name_tree) if (!fr_cond_assert(rbtree_deletebydata(module_instance_name_tree, mi))) return 1;
-       if (mi->in_data_tree) if (!fr_cond_assert(rbtree_deletebydata(module_instance_data_tree, mi))) return 1;
+       if (mi->in_name_tree) if (!fr_cond_assert(rbtree_delete_by_data(module_instance_name_tree, mi))) return 1;
+       if (mi->in_data_tree) if (!fr_cond_assert(rbtree_delete_by_data(module_instance_data_tree, mi))) return 1;
        if (mi->mutex) {
                /*
                 *      FIXME
index 8a23a8c8bab669d2ade8b1aeac7442e60b315a75..49edeafb2b33c49b13ec76ff85fa53e74c157516 100644 (file)
@@ -260,7 +260,7 @@ static void state_entry_unlink(fr_state_tree_t *state, fr_state_entry_t *entry)
 
        fr_dlist_remove(&state->to_expire, entry);
 
-       rbtree_deletebydata(state->tree, entry);
+       rbtree_delete_by_data(state->tree, entry);
 
        DEBUG4("State ID %" PRIu64 " unlinked", entry->id);
 }
@@ -558,7 +558,7 @@ static fr_state_entry_t *state_entry_find(fr_state_tree_t *state, request_t *req
         */
        my_entry.state_comp.server_hash ^= fr_hash_string(cf_section_name2(request->server_cs));
 
-       entry = rbtree_finddata(state->tree, &my_entry);
+       entry = rbtree_find_data(state->tree, &my_entry);
 
        if (entry) (void) talloc_get_type_abort(entry, fr_state_entry_t);
 
@@ -856,7 +856,7 @@ uint64_t fr_state_entries_timeout(fr_state_tree_t *state)
 /** Return number of entries we're currently tracking
  *
  */
-uint32_t fr_state_entries_tracked(fr_state_tree_t *state)
+uint64_t fr_state_entries_tracked(fr_state_tree_t *state)
 {
-       return (uint32_t)rbtree_num_elements(state->tree);
+       return rbtree_num_elements(state->tree);
 }
index ce79c74ab0262ffa4bfb739b796b055c2d3e1507..6a75500056d5a02203909bf83d415c8a98021bdf 100644 (file)
@@ -50,7 +50,7 @@ void  fr_state_restore_to_child(request_t *request, void const *unique_ptr, int u
  */
 uint64_t fr_state_entries_created(fr_state_tree_t *state);
 uint64_t fr_state_entries_timeout(fr_state_tree_t *state);
-uint32_t fr_state_entries_tracked(fr_state_tree_t *state);
+uint64_t fr_state_entries_tracked(fr_state_tree_t *state);
 
 #ifdef __cplusplus
 }
index 7076bd2fe889a7f8a515cb6d4d0a3fd123adb5a1..4b321ebbe550176b7f776e0452d265c3555e1c47 100644 (file)
@@ -356,7 +356,7 @@ int trigger_exec(request_t *request, CONF_SECTION const *cs, char const *name, b
 
                pthread_mutex_lock(trigger_mutex);
 
-               found = rbtree_finddata(trigger_last_fired_tree, &find);
+               found = rbtree_find_data(trigger_last_fired_tree, &find);
                if (!found) {
                        MEM(found = talloc(NULL, trigger_last_fired_t));
                        found->ci = ci;
index e3b01e75a1f52bc021504f2268ecd552ac914d02..92f712d8909acb5a789b9ec4a1e83d86d5139d5c 100644 (file)
@@ -652,7 +652,7 @@ fr_listen_t *listen_find_any(fr_listen_t *li)
 {
        if (!listen_addr_root) return false;
 
-       return rbtree_finddata(listen_addr_root, li);
+       return rbtree_find_data(listen_addr_root, li);
 }
 
 
@@ -721,7 +721,7 @@ int virtual_servers_instantiate(void)
                        fr_virtual_namespace_t  find = { .namespace = virtual_servers[i]->namespace };
                        fr_virtual_namespace_t  *found;
 
-                       found = rbtree_finddata(vns_tree, &find);
+                       found = rbtree_find_data(vns_tree, &find);
                        if (found) {
                                fr_assert(dict && (dict->dict == found->dict));
 
@@ -1722,7 +1722,7 @@ int virtual_server_section_register(virtual_server_compile_t const *entry)
 
        fr_assert(server_section_name_tree != NULL);
 
-       old = rbtree_finddata(server_section_name_tree, entry);
+       old = rbtree_find_data(server_section_name_tree, entry);
        if (old) return 0;
 
 #ifndef NDEBUG
@@ -1774,7 +1774,7 @@ virtual_server_method_t const *virtual_server_section_methods(char const *name1,
         *      define both "accounting on", and "accounting *".
         */
        if (name2 != CF_IDENT_ANY) {
-               entry = rbtree_finddata(server_section_name_tree,
+               entry = rbtree_find_data(server_section_name_tree,
                                        &(virtual_server_compile_t) {
                                                .name = name1,
                                                .name2 = name2,
@@ -1785,7 +1785,7 @@ virtual_server_method_t const *virtual_server_section_methods(char const *name1,
        /*
         *      Then look up the wildcard, if we didn't find any matching name2.
         */
-       entry = rbtree_finddata(server_section_name_tree,
+       entry = rbtree_find_data(server_section_name_tree,
                                &(virtual_server_compile_t) {
                                        .name = name1,
                                        .name2 = CF_IDENT_ANY,
index f370748c55e4bace72d1975cb0a214e1a1c8e8be..fc143061f65cbd4ea6d968accb889ae1d28f4ddd 100644 (file)
@@ -258,7 +258,7 @@ int fr_tls_engine_init(ENGINE **e_out,
        } else {
                tls_engine_t *found = NULL;
 
-               found = rbtree_finddata(tls_engines, &(tls_engine_t){ .id = id, .instance = instance });
+               found = rbtree_find_data(tls_engines, &(tls_engine_t){ .id = id, .instance = instance });
                if (found) {
                        fr_strerror_printf("engine %s%s%s%salready initialised", id,
                                           instance ? " (" : "",
@@ -434,7 +434,7 @@ int fr_tls_engine(ENGINE **e_out, char const *id, char const *instance, bool aut
        }
 
 
-       found = rbtree_finddata(tls_engines, &(tls_engine_t){ .id = id, .instance = instance });
+       found = rbtree_find_data(tls_engines, &(tls_engine_t){ .id = id, .instance = instance });
        if (!found) {
                if (!auto_init) goto not_init;
                goto do_init;
@@ -454,7 +454,7 @@ void fr_tls_engine_load_builtin(void)
        /*
         *      Mitigate against CrossTalk (CVE-2020-0543)
         */
-       if (!tls_engines || !rbtree_finddata(tls_engines, &(tls_engine_t){ .id = "rdrand" })) {
+       if (!tls_engines || !rbtree_find_data(tls_engines, &(tls_engine_t){ .id = "rdrand" })) {
                ENGINE *rand_engine;
 
                ENGINE_register_all_RAND();     /* Give rand engines a chance to register */
index 585a2d800286cdccdf20890b81652ec4997b5ade..2c0c009e3644782052b15c5dc6a26ef19e4708fa 100644 (file)
@@ -191,7 +191,7 @@ xlat_t *xlat_func_find(char const *in, ssize_t inlen)
        if (!xlat_root) return NULL;
 
        if (inlen < 0) {
-               return rbtree_finddata(xlat_root, &(xlat_t){ .name = in });
+               return rbtree_find_data(xlat_root, &(xlat_t){ .name = in });
        }
 
        if ((size_t) inlen >= sizeof(buffer)) return NULL;
@@ -199,7 +199,7 @@ xlat_t *xlat_func_find(char const *in, ssize_t inlen)
        memcpy(buffer, in, inlen);
        buffer[inlen] = '\0';
 
-       return rbtree_finddata(xlat_root, &(xlat_t){ .name = buffer });
+       return rbtree_find_data(xlat_root, &(xlat_t){ .name = buffer });
 }
 
 
@@ -212,7 +212,7 @@ static int _xlat_func_talloc_free(xlat_t *xlat)
 {
        if (!xlat_root) return 0;
 
-       rbtree_deletebydata(xlat_root, xlat);
+       rbtree_delete_by_data(xlat_root, xlat);
        if (rbtree_num_elements(xlat_root) == 0) TALLOC_FREE(xlat_root);
 
        return 0;
@@ -265,7 +265,7 @@ int xlat_register_legacy(void *mod_inst, char const *name,
        /*
         *      If it already exists, replace the instance.
         */
-       c = rbtree_finddata(xlat_root, &(xlat_t){ .name = name });
+       c = rbtree_find_data(xlat_root, &(xlat_t){ .name = name });
        if (c) {
                if (c->internal) {
                        ERROR("%s: Cannot re-define internal expansion %s", __FUNCTION__, name);
@@ -327,7 +327,7 @@ xlat_t const *xlat_register(TALLOC_CTX *ctx, char const *name, xlat_func_t func,
        /*
         *      If it already exists, replace the instance.
         */
-       c = rbtree_finddata(xlat_root, &(xlat_t){ .name = name });
+       c = rbtree_find_data(xlat_root, &(xlat_t){ .name = name });
        if (c) {
                if (c->internal) {
                        ERROR("%s: Cannot re-define internal expansion %s", __FUNCTION__, name);
@@ -466,7 +466,7 @@ void xlat_unregister(char const *name)
 
        if (!name || !xlat_root) return;
 
-       c = rbtree_finddata(xlat_root, &(xlat_t){ .name = name });
+       c = rbtree_find_data(xlat_root, &(xlat_t){ .name = name });
        if (!c) return;
 
        (void) talloc_get_type_abort(c, xlat_t);
index 9dcbe5795f65ecd8c003faa222f32595acae8e3f..f535b0321692d1a8c98cf47b603ba8d21a254583 100644 (file)
@@ -165,7 +165,7 @@ static int _xlat_inst_detach(xlat_inst_t *inst)
         *      Remove permanent data from the instance tree.
         */
        if (!inst->node->call.ephemeral) {
-               rbtree_deletebydata(xlat_inst_tree, inst);
+               rbtree_delete_by_data(xlat_inst_tree, inst);
                if (rbtree_num_elements(xlat_inst_tree) == 0) TALLOC_FREE(xlat_inst_tree);
        }
 
@@ -329,7 +329,7 @@ xlat_thread_inst_t *xlat_thread_instance_find(xlat_exp_t const *node)
 
        if (node->call.ephemeral) return node->call.thread_inst;
 
-       found = rbtree_finddata(xlat_thread_inst_tree, &(xlat_thread_inst_t){ .node = node });
+       found = rbtree_find_data(xlat_thread_inst_tree, &(xlat_thread_inst_t){ .node = node });
        fr_assert(found);
 
        return found;
index 89c25c8d541fb5d8deaf4fd0f983ea09666f30a2..94c5683e48c238c50f422c5dd2d47d650ba8bd9d 100644 (file)
@@ -428,7 +428,7 @@ static int _dl_free(dl_t *dl)
 
        dl->handle = NULL;
 
-       if (dl->in_tree) rbtree_deletebydata(dl->loader->tree, dl);
+       if (dl->in_tree) rbtree_delete_by_data(dl->loader->tree, dl);
 
        return 0;
 }
@@ -458,7 +458,7 @@ dl_t *dl_by_name(dl_loader_t *dl_loader, char const *name, void *uctx, bool uctx
         *      There's already something in the tree,
         *      just return that instead.
         */
-       dl = rbtree_finddata(dl_loader->tree, &(dl_t){ .name = name });
+       dl = rbtree_find_data(dl_loader->tree, &(dl_t){ .name = name });
        if (dl) {
                talloc_increase_ref_count(dl);
                return dl;
index b80e9cee8deda450ced942421bebc2c6922d7fbe..c557eea4f7977322ec05aaedab5b8eb5cbc39d22 100644 (file)
@@ -430,7 +430,7 @@ static int8_t fr_event_pid_cmp(void const *a, void const *b)
 /** Return the number of file descriptors is_registered with this event loop
  *
  */
-int fr_event_list_num_fds(fr_event_list_t *el)
+uint64_t fr_event_list_num_fds(fr_event_list_t *el)
 {
        if (unlikely(!el)) return -1;
 
@@ -725,7 +725,7 @@ static int _event_fd_delete(fr_event_fd_t *ef)
                        }
                }
 
-               rbtree_deletebydata(el->fds, ef);
+               rbtree_delete_by_data(el->fds, ef);
                ef->is_registered = false;
        }
 
@@ -787,7 +787,7 @@ int _fr_event_fd_move(NDEBUG_LOCATION_ARGS
        /*
         *      Ensure this exists
         */
-       ef = rbtree_finddata(src->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
+       ef = rbtree_find_data(src->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
        if (unlikely(!ef)) {
                fr_strerror_printf("No events are registered for fd %i", fd);
                return -1;
@@ -833,7 +833,7 @@ int _fr_event_filter_update(NDEBUG_LOCATION_ARGS
        struct kevent           evset[10];
        int                     count = 0;
 
-       ef = rbtree_finddata(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
+       ef = rbtree_find_data(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
        if (unlikely(!ef)) {
                fr_strerror_printf("No events are registered for fd %i", fd);
                return -1;
@@ -929,7 +929,7 @@ int _fr_event_filter_insert(NDEBUG_LOCATION_ARGS
        }
 
        if (!ef_out || !*ef_out) {
-               ef = rbtree_finddata(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
+               ef = rbtree_find_data(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
        } else {
                ef = *ef_out;
                fr_assert((fd < 0) || (ef->fd == fd));
@@ -1088,7 +1088,7 @@ int fr_event_fd_delete(fr_event_list_t *el, int fd, fr_event_filter_t filter)
 {
        fr_event_fd_t   *ef;
 
-       ef = rbtree_finddata(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
+       ef = rbtree_find_data(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
        if (unlikely(!ef)) {
                fr_strerror_printf("No events are registered for fd %i", fd);
                return -1;
@@ -1126,7 +1126,7 @@ int fr_event_fd_armour(fr_event_list_t *el, int fd, fr_event_filter_t filter, ui
 {
        fr_event_fd_t   *ef;
 
-       ef = rbtree_finddata(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
+       ef = rbtree_find_data(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
        if (unlikely(!ef)) {
                fr_strerror_printf("No events are registered for fd %i", fd);
                return -1;
@@ -1156,7 +1156,7 @@ int fr_event_fd_unarmour(fr_event_list_t *el, int fd, fr_event_filter_t filter,
 {
        fr_event_fd_t   *ef;
 
-       ef = rbtree_finddata(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
+       ef = rbtree_find_data(el->fds, &(fr_event_fd_t){ .fd = fd, .filter = filter });
        if (unlikely(!ef)) {
                fr_strerror_printf("No events are registered for fd %i", fd);
                return -1;
@@ -2425,7 +2425,7 @@ void fr_event_report(fr_event_list_t *el, fr_time_t now, void *uctx)
                                fr_event_counter_t find = { .file = ev->file, .line = ev->line };
                                fr_event_counter_t *counter;
 
-                               counter = rbtree_finddata(locations[i], &find);
+                               counter = rbtree_find_data(locations[i], &find);
                                if (!counter) {
                                        counter = talloc(locations[i], fr_event_counter_t);
                                        if (!counter) goto oom;
@@ -2445,7 +2445,7 @@ void fr_event_report(fr_event_list_t *el, fr_time_t now, void *uctx)
 
        pthread_mutex_lock(&print_lock);
        EVENT_DEBUG("Event list %p", el);
-       EVENT_DEBUG("    fd events            : %u", fr_event_list_num_fds(el));
+       EVENT_DEBUG("    fd events            : %"PRIu64, fr_event_list_num_fds(el));
        EVENT_DEBUG("    events last iter     : %u", el->num_fd_events);
        EVENT_DEBUG("    num timer events     : %u", fr_event_list_num_timers(el));
 
index 7c6f96b03b97fc608a6d62fcdb9c4061ab9d692b..54316ceec6d4b8a21a18bc04bf5f6117a4f17dfb 100644 (file)
@@ -195,7 +195,7 @@ typedef union {
        fr_event_vnode_func_t   vnode;                  //!< vnode callback functions.
 } fr_event_funcs_t;
 
-int            fr_event_list_num_fds(fr_event_list_t *el);
+uint64_t       fr_event_list_num_fds(fr_event_list_t *el);
 int            fr_event_list_num_timers(fr_event_list_t *el);
 int            fr_event_list_kq(fr_event_list_t *el);
 fr_time_t      fr_event_list_time(fr_event_list_t *el) CC_HINT(nonnull);
index 3eaa9af23bffa3202b6c3c862e512885b95e88a0..13066c3fbb7bee8e72db552f4b8c32545942949a 100644 (file)
@@ -41,7 +41,7 @@ struct rbtree_s {
                                                ///< the structure being inserted.
        char const              *type;          //!< Talloc type to check elements against.
 
-       uint64_t                num_elements;   //!< How many elements are inside the tree.
+       size_t                  num_elements;   //!< How many elements are inside the tree.
        fr_rb_cmp_t             compare;        //!< The comparator.
        fr_rb_free_t            free;           //!< Free function called when a node is freed.
 
@@ -577,11 +577,11 @@ void rbtree_delete(rbtree_t *tree, fr_rb_node_t *z)
        rbtree_delete_internal(tree, z, false);
 }
 
-/** Delete a node from the tree, based on given data, which MUST have come from rbtree_finddata().
+/** Delete a node from the tree, based on given data, which MUST have come from rbtree_find_data().
  *
  *
  */
-bool rbtree_deletebydata(rbtree_t *tree, void const *data)
+bool rbtree_delete_by_data(rbtree_t *tree, void const *data)
 {
        fr_rb_node_t *node;
 
@@ -628,7 +628,7 @@ fr_rb_node_t *rbtree_find(rbtree_t *tree, void const *data)
  *
  * @hidecallergraph
  */
-void *rbtree_finddata(rbtree_t *tree, void const *data)
+void *rbtree_find_data(rbtree_t *tree, void const *data)
 {
        fr_rb_node_t *x;
 
@@ -640,220 +640,21 @@ void *rbtree_finddata(rbtree_t *tree, void const *data)
        return x->data;
 }
 
-/** Walk the tree, Pre-order
+/** Return how many nodes there are in a tree
  *
- * We call ourselves recursively for each function, but that's OK,
- * as the stack is only log(N) deep, which is ~12 entries deep.
+ * @param[in] tree     to return node count for.
  */
-static int walk_node_pre_order(fr_rb_node_t *x, fr_rb_walker_t compare, void *uctx)
-{
-       int             ret;
-       fr_rb_node_t    *left, *right;
-
-       left = x->left;
-       right = x->right;
-
-       ret = compare(x->data, uctx);
-       if (ret != 0) return ret;
-
-       if (left != NIL) {
-               ret = walk_node_pre_order(left, compare, uctx);
-               if (ret != 0) return ret;
-       }
-
-       if (right != NIL) {
-               ret = walk_node_pre_order(right, compare, uctx);
-               if (ret != 0) return ret;
-       }
-
-       return 0;/* we know everything returned zero */
-}
-
-/** rbtree_in_order
- *
- */
-static int walk_node_in_order(fr_rb_node_t *x, fr_rb_walker_t compare, void *uctx)
-{
-       int ret;
-       fr_rb_node_t *right;
-
-       if (x->left != NIL) {
-               ret = walk_node_in_order(x->left, compare, uctx);
-               if (ret != 0) return ret;
-       }
-
-       right = x->right;
-
-       ret = compare(x->data, uctx);
-       if (ret != 0) return ret;
-
-       if (right != NIL) {
-               ret = walk_node_in_order(right, compare, uctx);
-               if (ret != 0) return ret;
-       }
-
-       return 0;               /* we know everything returned zero */
-}
-
-
-/** rbtree_post_order
- *
- */
-static int walk_node_post_order(fr_rb_node_t *x, fr_rb_walker_t compare, void *uctx)
-{
-       int ret;
-
-       if (x->left != NIL) {
-               ret = walk_node_post_order(x->left, compare, uctx);
-               if (ret != 0) return ret;
-       }
-
-       if (x->right != NIL) {
-               ret = walk_node_post_order(x->right, compare, uctx);
-               if (ret != 0) return ret;
-       }
-
-       ret = compare(x->data, uctx);
-       if (ret != 0) return ret;
-
-       return 0;               /* we know everything returned zero */
-}
-
-/** rbtree_delete_order
- *
- *     This executes an rbtree_in_order-like walk that adapts to changes in the
- *     tree above it, which may occur because we allow the compare to
- *     tell us to delete the current node.
- *
- *     The compare should return:
- *
- *             < 0  - on error
- *             0    - continue walking, don't delete the node
- *             1    - delete the node and stop walking
- *             2    - delete the node and continue walking
- */
-static int walk_delete_order(rbtree_t *tree, fr_rb_walker_t compare, void *uctx)
-{
-       fr_rb_node_t *solid, *x;
-       int ret = 0;
-
-       /* Keep track of last node that refused deletion. */
-       solid = NIL;
-       while (solid == NIL) {
-               x = tree->root;
-               if (x == NIL) break;
-       descend:
-               while (x->left != NIL) {
-                       x = x->left;
-               }
-       visit:
-               ret = compare(x->data, uctx);
-               if (ret < 0) {
-                       return ret;
-               }
-               if (ret) {
-                       rbtree_delete_internal(tree, x, true);
-                       if (ret != 2) {
-                               return ret;
-                       }
-               } else {
-                       solid = x;
-               }
-       }
-       if (solid != NIL) {
-               x = solid;
-               if (x->right != NIL) {
-                       x = x->right;
-                       goto descend;
-               }
-               while (x->parent != NIL) {
-                       if (x->parent->left == x) {
-                               x = x->parent;
-                               goto visit;
-                       }
-                       x = x->parent;
-               }
-       }
-       return ret;
-}
-
-
-/*
- *     walk the entire tree.  The compare function CANNOT modify
- *     the tree.
- *
- *     The compare function should return 0 to continue walking.
- *     Any other value stops the walk, and is returned.
- */
-int rbtree_walk(rbtree_t *tree, fr_rb_order_t order, fr_rb_walker_t compare, void *uctx)
-{
-       int ret;
-
-       if (tree->root == NIL) return 0;
-
-       if (tree->lock) pthread_mutex_lock(&tree->mutex);
-
-       switch (order) {
-       case RBTREE_PRE_ORDER:
-               ret = walk_node_pre_order(tree->root, compare, uctx);
-               break;
-
-       case RBTREE_IN_ORDER:
-               ret = walk_node_in_order(tree->root, compare, uctx);
-               break;
-
-       case RBTREE_POST_ORDER:
-               ret = walk_node_post_order(tree->root, compare, uctx);
-               break;
-
-       case RBTREE_DELETE_ORDER:
-               ret = walk_delete_order(tree, compare, uctx);
-               break;
-
-       default:
-               ret = -1;
-               break;
-       }
-
-       if (tree->lock) pthread_mutex_unlock(&tree->mutex);
-       return ret;
-}
-
-uint32_t rbtree_num_elements(rbtree_t *tree)
+uint64_t rbtree_num_elements(rbtree_t *tree)
 {
        return tree->num_elements;
 }
 
-typedef struct {
-       size_t                  idx;
-       void                    **data;
-} rbtree_flatten_ctx_t;
-
-static int _flatten_cb(void *data, void *uctx)
-{
-       rbtree_flatten_ctx_t *ctx = uctx;
-       ctx->data[ctx->idx++] = data;
-       return 0;
-}
-
-
-
-/*
- *     Given a Node, return the data.
- */
-void *rbtree_node2data(UNUSED rbtree_t *tree, fr_rb_node_t *node)
-{
-       if (!node) return NULL;
-
-       return node->data;
-}
-
 /** Initialise an in-order iterator
  *
  * @note If iteration ends early because of a loop condition #rbtree_iter_done must be called.
  *
- * @param[out] iter to initialise.
- * @param[in] tree to iterate over.
+ * @param[out] iter    to initialise.
+ * @param[in] tree     to iterate over.
  * @return
  *     - The first node.  Mutex will be held.
  *     - NULL if the tree is empty.
@@ -960,8 +761,8 @@ void rbtree_iter_delete_inorder(fr_rb_tree_iter_inorder_t *iter)
  *
  * @note If iteration ends early because of a loop condition #rbtree_iter_done must be called.
  *
- * @param[out] iter to initialise.
- * @param[in] tree to iterate over.
+ * @param[out] iter    to initialise.
+ * @param[in] tree     to iterate over.
  * @return
  *     - The first node.  Mutex will be held.
  *     - NULL if the tree is empty.
@@ -1044,8 +845,8 @@ void *rbtree_iter_next_preorder(fr_rb_tree_iter_preorder_t  *iter)
  *
  * @note If iteration ends early because of a loop condition #rbtree_iter_done must be called.
  *
- * @param[out] iter to initialise.
- * @param[in] tree to iterate over.
+ * @param[out] iter    to initialise.
+ * @param[in] tree     to iterate over.
  * @return
  *     - The first node.  Mutex will be held.
  *     - NULL if the tree is empty.
@@ -1132,17 +933,18 @@ void *rbtree_iter_next_postorder(fr_rb_tree_iter_postorder_t *iter)
        return x->data;
 }
 
-#define DEF_RBTREE_FLATTEN_FUNC(_order)
-ssize_t rbtree_flatten_##_order(TALLOC_CTX *ctx, void **out[], rbtree_t *tree) \
+#define DEF_RBTREE_FLATTEN_FUNC(_order) \
+int rbtree_flatten_##_order(TALLOC_CTX *ctx, void **out[], rbtree_t *tree) \
 { \
-       uint32_t num = rbtree_num_elements(tree), i; \
+       uint64_t num = rbtree_num_elements(tree), i; \
        fr_rb_tree_iter_##_order##_t iter; \
        void *item, **list; \
-       if (unlikely(!(list = talloc_array(ctx, void *, num)))) return -1;
+       if (unlikely(!(list = talloc_array(ctx, void *, num)))) return -1; \
        for (item = rbtree_iter_init_##_order(&iter, tree), i = 0; \
             item; \
             item = rbtree_iter_next_##_order(&iter), i++) list[i] = item; \
-       return list; \
+       *out = list; \
+       return 0; \
 }
 DEF_RBTREE_FLATTEN_FUNC(preorder)
 DEF_RBTREE_FLATTEN_FUNC(postorder)
index f62a0ff68e78099e46dbe6aa92ee8bbc348a0bd9..857318fe70a7d4ebdd079b607ab5b59f946579ba 100644 (file)
@@ -37,13 +37,6 @@ extern "C" {
 /* rbtree.c */
 typedef struct rbtree_s rbtree_t;
 
-/* callback order for walking  */
-typedef enum {
-       RBTREE_PRE_ORDER,
-       RBTREE_IN_ORDER,
-       RBTREE_POST_ORDER,
-} fr_rb_order_t;
-
 /* Red-Black tree description */
 typedef enum {
        BLACK,
@@ -66,7 +59,6 @@ struct fr_rb_node_s {
 #define RBTREE_FLAG_LOCK    (1 << 1)
 
 typedef int (*fr_rb_cmp_t)(void const *one, void const *two);
-typedef int (*fr_rb_walker_t)(void *data, void *uctx);
 typedef void (*fr_rb_free_t)(void *data);
 
 #ifndef STABLE_COMPARE
@@ -135,34 +127,23 @@ fr_rb_node_t      *rbtree_insert_node(rbtree_t *tree, void *data) CC_HINT(nonnull);
 
 void           rbtree_delete(rbtree_t *tree, fr_rb_node_t *z) CC_HINT(nonnull);
 
-bool           rbtree_deletebydata(rbtree_t *tree, void const *data) CC_HINT(nonnull);
+bool           rbtree_delete_by_data(rbtree_t *tree, void const *data) CC_HINT(nonnull);
 
 fr_rb_node_t   *rbtree_find(rbtree_t *tree, void const *data) CC_HINT(nonnull);
 
 /** @hidecallergraph */
-void           *rbtree_finddata(rbtree_t *tree, void const *data) CC_HINT(nonnull);
-
-uint32_t       rbtree_num_elements(rbtree_t *tree) CC_HINT(nonnull);
+void           *rbtree_find_data(rbtree_t *tree, void const *data) CC_HINT(nonnull);
 
-void           *rbtree_node2data(rbtree_t *tree, fr_rb_node_t *node);
+uint64_t       rbtree_num_elements(rbtree_t *tree) CC_HINT(nonnull);
 
-/*
- *     The callback should be declared as:
- *     int callback(void *context, void *data)
- *
- *     The "context" is some user-defined context.
- *     The "data" is the pointer to the user data in the node,
- *     NOT the node itself.
- *
- *     It should return 0 if all is OK, and !0 for any error.
- *     The walking will stop on any error.
- *
- *     Except with RBTREE_DELETE_ORDER, where the callback should return <0 for
- *     errors, and may return 1 to delete the current node and halt,
- *     or 2 to delete the current node and continue.  This may be
- *     used to batch-delete select nodes from a locked rbtree.
+/** Given a Node, return the data
  */
-int            rbtree_walk(rbtree_t *tree, fr_rb_order_t order, fr_rb_walker_t compare, void *uctx);
+static inline void *rbtree_node_to_data(UNUSED rbtree_t *tree, fr_rb_node_t *node)
+{
+       if (!node) return NULL;
+
+       return node->data;
+}
 
 /** Iterator structure for in-order traversal of an rbtree
  */
@@ -214,13 +195,11 @@ void              *rbtree_iter_next_postorder(fr_rb_tree_iter_postorder_t *iter) CC_HINT(non
        ))
 
 
-ssize_t                rbtree_flatten_inorder(TALLOC_CTX *ctx, void **out[], rbtree_t *tree);
-
-ssize_t                rbtree_flatten_preorder(TALLOC_CTX *ctx, void **out[], rbtree_t *tree);
-
-ssize_t                rbtree_flatten_postorder(TALLOC_CTX *ctx, void **out[], rbtree_t *tree);
+int            rbtree_flatten_inorder(TALLOC_CTX *ctx, void **out[], rbtree_t *tree);
 
+int            rbtree_flatten_preorder(TALLOC_CTX *ctx, void **out[], rbtree_t *tree);
 
+int            rbtree_flatten_postorder(TALLOC_CTX *ctx, void **out[], rbtree_t *tree);
 #ifdef __cplusplus
 }
 #endif
index 67b9a0f26351343b57d0d9411928ed3b52c25f6d..789e250d97de15aa21df7005fa0a937c4ba38abd 100644 (file)
@@ -608,7 +608,7 @@ static bfd_state_t *bfd_new_session(bfd_socket_t *sock, int sockfd,
                session->pthread_id = pthread_self();
        } else {
                if (!bfd_pthread_create(session)) {
-                       rbtree_deletebydata(sock->session_tree, session);
+                       rbtree_delete_by_data(sock->session_tree, session);
                        talloc_free(session);
                        return NULL;
                }
@@ -1485,7 +1485,7 @@ static int bfd_socket_recv(rad_listen_t *listener)
        fr_ipaddr_from_sockaddr(&my_session.socket.inet.dst_ipaddr,
                                &my_session.socket.inet.dst_port, &src, sizeof_src);
 
-       session = rbtree_finddata(sock->session_tree, &my_session);
+       session = rbtree_find_data(sock->session_tree, &my_session);
        if (!session) {
                DEBUG("BFD unknown peer");
                return 0;
@@ -1587,7 +1587,7 @@ static int bfd_init_sessions(CONF_SECTION *cs, bfd_socket_t *sock, int sockfd)
 
               my_session.socket.inet.dst_ipaddr = ipaddr;
               my_session.socket.inet.dst_port = port;
-              if (rbtree_finddata(sock->session_tree, &my_session) != NULL) {
+              if (rbtree_find_data(sock->session_tree, &my_session) != NULL) {
                       cf_log_err(ci, "Peers must have unique IP addresses");
                       return -1;
               }
index c5c88258153fe74f385795fc029ce1e02126b62f..457361028751e64cbfee454d597c33536fa6ea11 100644 (file)
@@ -774,7 +774,7 @@ int sync_demux(int *sync_id, fr_ldap_connection_t *conn)
                if (!sync || (sync->msgid != msgid)) {
                        find.msgid = msgid;
 
-                       sync = rbtree_finddata(tree, &find);
+                       sync = rbtree_find_data(tree, &find);
                        if (!sync) {
                                WARN("Ignoring msgid %i, doesn't match any outstanding syncs",
                                     find.msgid);
@@ -876,7 +876,7 @@ static int _sync_state_free(sync_state_t *sync)
         *      Tell the remote server to stop sending results
         */
        ldap_abandon_ext(sync->conn->handle, sync->msgid, NULL, NULL);
-       rbtree_deletebydata(tree, &find);
+       rbtree_delete_by_data(tree, &find);
 
        return 0;
 }
@@ -918,7 +918,7 @@ void sync_state_destroy(fr_ldap_connection_t *conn, int msgid)
 
        find.msgid = msgid;
 
-       sync = rbtree_finddata(tree, &find);
+       sync = rbtree_find_data(tree, &find);
        talloc_free(sync);      /* Will inform the server */
 }
 
@@ -938,7 +938,7 @@ sync_config_t const *sync_state_config_get(fr_ldap_connection_t *conn, int msgid
 
        find.msgid = msgid;
 
-       sync = rbtree_finddata(tree, &find);
+       sync = rbtree_find_data(tree, &find);
        return sync->config;
 }
 
index 16d091ea3c8a12419120a76b5241c92f6acf2a5a..e86b71733ae3fca700a3f7f62260707715a86ba0 100644 (file)
@@ -175,14 +175,14 @@ static cache_status_t cache_entry_find(rlm_cache_entry_t **out,
        c = fr_heap_peek(driver->heap);
        if (c && (c->expires < fr_time_to_unix_time(request->packet->timestamp))) {
                fr_heap_extract(driver->heap, c);
-               rbtree_deletebydata(driver->cache, c);
+               rbtree_delete_by_data(driver->cache, c);
                talloc_free(c);
        }
 
        /*
         *      Is there an entry for this key?
         */
-       c = rbtree_finddata(driver->cache, &(rlm_cache_entry_t){ .key = key, .key_len = key_len });
+       c = rbtree_find_data(driver->cache, &(rlm_cache_entry_t){ .key = key, .key_len = key_len });
        if (!c) {
                *out = NULL;
                return CACHE_MISS;
@@ -207,11 +207,11 @@ static cache_status_t cache_entry_expire(UNUSED rlm_cache_config_t const *config
 
        if (!request) return CACHE_ERROR;
 
-       c = rbtree_finddata(driver->cache, &(rlm_cache_entry_t){ .key = key, .key_len = key_len });
+       c = rbtree_find_data(driver->cache, &(rlm_cache_entry_t){ .key = key, .key_len = key_len });
        if (!c) return CACHE_MISS;
 
        fr_heap_extract(driver->heap, c);
-       rbtree_deletebydata(driver->cache, c);
+       rbtree_delete_by_data(driver->cache, c);
        talloc_free(c);
 
        return CACHE_OK;
@@ -250,7 +250,7 @@ static cache_status_t cache_entry_insert(rlm_cache_config_t const *config, void
        }
 
        if (fr_heap_insert(driver->heap, UNCONST(rlm_cache_entry_t *, c)) < 0) {
-               rbtree_deletebydata(driver->cache, c);
+               rbtree_delete_by_data(driver->cache, c);
                RERROR("Failed adding entry to expiry heap");
 
                return CACHE_ERROR;
@@ -281,7 +281,7 @@ static cache_status_t cache_entry_set_ttl(UNUSED rlm_cache_config_t const *confi
        }
 
        if (fr_heap_insert(driver->heap, c) < 0) {
-               rbtree_deletebydata(driver->cache, c);  /* make sure we don't leak entries... */
+               rbtree_delete_by_data(driver->cache, c);        /* make sure we don't leak entries... */
                RERROR("Failed updating entry TTL.  Entry was forcefully expired");
                return CACHE_ERROR;
        }
@@ -294,7 +294,7 @@ static cache_status_t cache_entry_set_ttl(UNUSED rlm_cache_config_t const *confi
  *
  * @copydetails cache_entry_count_t
  */
-static uint32_t cache_entry_count(UNUSED rlm_cache_config_t const *config, void *instance,
+static uint64_t cache_entry_count(UNUSED rlm_cache_config_t const *config, void *instance,
                                  request_t *request, UNUSED void *handle)
 {
        rlm_cache_rbtree_t *driver = talloc_get_type_abort(instance, rlm_cache_rbtree_t);
index e4bb75319291b3e42d8d43fc0361b25bc1787693..4119e4e815a262cafbeec72ac01cbcb6891b8b64 100644 (file)
@@ -217,7 +217,7 @@ typedef cache_status_t      (*cache_entry_set_ttl_t)(rlm_cache_config_t const *config
  *     #cache_acquire_t callback was provided.
  * @return number of entries in the cache.
  */
-typedef uint32_t       (*cache_entry_count_t)(rlm_cache_config_t const *config, void *instance,
+typedef uint64_t       (*cache_entry_count_t)(rlm_cache_config_t const *config, void *instance,
                                               request_t *request, void *handle);
 
 /** Acquire a handle to access the cache
index b82613690b03ea525cea15efd745747a657127e9..71119bed26c81e3cb2912081b903ee8fd9e248d2 100644 (file)
@@ -183,7 +183,7 @@ static rlm_csv_entry_t *find_entry(rlm_csv_t const *inst, fr_value_box_t const *
 
        memcpy(&my_e.key, &key, sizeof(key)); /* const issues */
 
-       return rbtree_finddata(inst->tree, &my_e);
+       return rbtree_find_data(inst->tree, &my_e);
 }
 
 static bool insert_entry(CONF_SECTION *conf, rlm_csv_t *inst, rlm_csv_entry_t *e, int lineno)
index 911df2a8acb4382ab5dc7da37cf1332caee0a4e3..f395f0a6b068b11acd84978abdefca217227e7e2 100644 (file)
@@ -265,7 +265,7 @@ static int getusersfile(TALLOC_CTX *ctx, char const *filename, rbtree_t **ptree)
                 *      for a matching list header already in the tree.
                 */
                search_list.name = entry->name;
-               user_list = rbtree_finddata(tree, &search_list);
+               user_list = rbtree_find_data(tree, &search_list);
                if (!user_list) {
                        user_list = talloc_zero(ctx, PAIR_LIST_LIST);
                        pairlist_list_init(user_list);
@@ -328,10 +328,10 @@ static unlang_action_t file_common(rlm_rcode_t *p_result, rlm_files_t const *ins
        if (!tree) RETURN_MODULE_NOOP;
 
        my_list.name = name;
-       user_list = rbtree_finddata(tree, &my_list);
+       user_list = rbtree_find_data(tree, &my_list);
        user_pl = (user_list) ? fr_dlist_head(&user_list->head) : NULL;
        my_list.name = "DEFAULT";
-       default_list = rbtree_finddata(tree, &my_list);
+       default_list = rbtree_find_data(tree, &my_list);
        default_pl = (default_list) ? fr_dlist_head(&default_list->head) : NULL;
 
        /*
index 4753849ab4562874ac8eb7b075201c5e24bf7092..8bf089fbf412762b58af9b3817e6dc80a3e79d8f 100644 (file)
@@ -135,7 +135,7 @@ static xlat_action_t xlat_icmp_resume(TALLOC_CTX *ctx, fr_dcursor_t *out,
        MEM(vb = fr_value_box_alloc(ctx, FR_TYPE_BOOL, NULL, false));
        vb->vb_bool = echo->replied;
 
-       (void) rbtree_deletebydata(thread->t->tree, echo);
+       (void) rbtree_delete_by_data(thread->t->tree, echo);
        talloc_free(echo);
 
        fr_dcursor_insert(out, vb);
@@ -153,7 +153,7 @@ static void xlat_icmp_cancel(request_t *request, UNUSED void *xlat_inst, void *x
 
        RDEBUG2("Cancelling ICMP request for %pV (counter=%d)", echo->ip, echo->counter);
 
-       (void) rbtree_deletebydata(thread->t->tree, echo);
+       (void) rbtree_delete_by_data(thread->t->tree, echo);
        talloc_free(echo);
 }
 
@@ -233,7 +233,7 @@ static xlat_action_t xlat_icmp(TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out,
 
        if (unlang_xlat_event_timeout_add(request, _xlat_icmp_timeout, echo, fr_time() + inst->timeout) < 0) {
                RPEDEBUG("Failed adding timeout");
-               (void) rbtree_deletebydata(thread->t->tree, echo);
+               (void) rbtree_delete_by_data(thread->t->tree, echo);
                talloc_free(echo);
                return XLAT_ACTION_FAIL;
        }
@@ -270,14 +270,14 @@ static xlat_action_t xlat_icmp(TALLOC_CTX *ctx, UNUSED fr_dcursor_t *out,
        rcode = sendto(thread->t->fd, &icmp, sizeof(icmp), 0, (struct sockaddr *) &dst, salen);
        if (rcode < 0) {
                REDEBUG("Failed sending ICMP request to %pV: %s", echo->ip, fr_syserror(errno));
-               (void) rbtree_deletebydata(thread->t->tree, echo);
+               (void) rbtree_delete_by_data(thread->t->tree, echo);
                talloc_free(echo);
                return XLAT_ACTION_FAIL;
        }
 
        if ((size_t) rcode < sizeof(icmp)) {
                REDEBUG("Failed sending entire ICMP packet");
-               (void) rbtree_deletebydata(thread->t->tree, echo);
+               (void) rbtree_delete_by_data(thread->t->tree, echo);
                talloc_free(echo);
                return XLAT_ACTION_FAIL;
        }
@@ -365,13 +365,13 @@ static void mod_icmp_read(UNUSED fr_event_list_t *el, UNUSED int sockfd, UNUSED
         *      Look up the packet by the fields which determine *our* ICMP packets.
         */
        my_echo.counter = icmp->counter;
-       echo = rbtree_finddata(t->tree, &my_echo);
+       echo = rbtree_find_data(t->tree, &my_echo);
        if (!echo) {
                DEBUG("Can't find packet counter=%d in tree", icmp->counter);
                return;
        }
 
-       (void) rbtree_deletebydata(t->tree, echo);
+       (void) rbtree_delete_by_data(t->tree, echo);
 
        /*
         *      We have a reply!
index 4537cefbb8d904d4907607cb60a9ef8a9a73adb8..0926a5f08f8f3281d963931d47835ae2b8d58924 100644 (file)
@@ -241,7 +241,7 @@ int radius_track_entry_release(
                 *      This entry MAY be in a subtree.  If so, delete
                 *      it.
                 */
-               if (tt->subtree[te->id]) (void) rbtree_deletebydata(tt->subtree[te->id], te);
+               if (tt->subtree[te->id]) (void) rbtree_delete_by_data(tt->subtree[te->id], te);
 
                goto done;
        }
@@ -255,7 +255,7 @@ int radius_track_entry_release(
         *      Delete it from the tracking subtree.
         */
        fr_assert(tt->subtree[te->id] != NULL);
-       (void) rbtree_deletebydata(tt->subtree[te->id], te);
+       (void) rbtree_delete_by_data(tt->subtree[te->id], te);
 
        /*
         *      Try to free memory if the system gets idle.  If the
@@ -297,7 +297,7 @@ int radius_track_entry_update(radius_track_entry_t *te, uint8_t const *vector)
        /*
         *      The authentication vector may have changed.
         */
-       if (tt->subtree[te->id]) (void) rbtree_deletebydata(tt->subtree[te->id], te);
+       if (tt->subtree[te->id]) (void) rbtree_delete_by_data(tt->subtree[te->id], te);
 
        memcpy(te->vector, vector, sizeof(te->vector));
 
@@ -362,7 +362,7 @@ radius_track_entry_t *radius_track_entry_find(radius_track_t *tt, uint8_t packet
         */
        memcpy(&my_te.vector, vector, sizeof(my_te.vector));
 
-       te = rbtree_finddata(tt->subtree[packet_id], &my_te);
+       te = rbtree_find_data(tt->subtree[packet_id], &my_te);
 
        /*
         *      Not found, the packet MAY have been allocated in the
index eb44a3d15a29c97f9f9d60507db30e16a7648566..f3643705f5230591b3de91cf88d5cfae7caf0d4b 100644 (file)
@@ -262,7 +262,7 @@ static SECURID_SESSION *securid_sessionlist_delete(rlm_securid_t *inst, SECURID_
 
 static void securid_sessionlist_clean_expired(rlm_securid_t *inst, request_t *request, time_t timestamp)
 {
-       int num_sessions;
+       uint64_t num_sessions;
        SECURID_SESSION *session;
 
        num_sessions = rbtree_num_elements(inst->session_tree);
index be98cac497825e7010889d2a2bba1c8e899434b6..99f62a5c4f325db286a01d527373e385ebd495c3 100644 (file)
@@ -81,7 +81,7 @@ static void sigtran_tcap_timeout(void *data)
        /*
         *      Remove the outstanding transaction
         */
-       if (!rbtree_deletebydata(txn_tree, txn)) ERROR("Transaction removed before timeout");
+       if (!rbtree_delete_by_data(txn_tree, txn)) ERROR("Transaction removed before timeout");
 
        txn->response.type = SIGTRAN_RESPONSE_FAIL;
 
@@ -248,7 +248,7 @@ static int sigtran_tcap_incoming(struct msgb *msg, UNUSED unsigned int length, U
        /*
         *      Lookup the transaction in our tree of outstanding transactions
         */
-       found = rbtree_finddata(txn_tree, &find);
+       found = rbtree_find_data(txn_tree, &find);
        if (!found) {
                /*
                 *      Not an error, could be a retransmission
@@ -256,7 +256,7 @@ static int sigtran_tcap_incoming(struct msgb *msg, UNUSED unsigned int length, U
                ERROR("No outstanding transaction with DTID %u Invoke ID %u", find.ctx.otid, find.ctx.invoke_id);
                return 0;
        }
-       if (!rbtree_deletebydata(txn_tree, found)) {            /* Remove the outstanding transaction */
+       if (!rbtree_delete_by_data(txn_tree, found)) {          /* Remove the outstanding transaction */
                ERROR("Failed removing transaction");
                fr_assert(0);
        }
index 9c40d41b952b6d412a6b085a5c6d6397613f2fab..3ecfc28af3e0d4983ea1fbe898ed8e5c9d75ada5 100644 (file)
@@ -117,7 +117,7 @@ static void coalesce(uint64_t final_stats[FR_RADIUS_MAX_PACKET_CODE], rlm_stats_
         *      Bootstrap with my statistics, where we don't need a
         *      lock.
         */
-       stats = rbtree_finddata(*tree, mydata);
+       stats = rbtree_find_data(*tree, mydata);
        if (!stats) {
                memset(final_stats, 0, sizeof(uint64_t) * FR_RADIUS_MAX_PACKET_CODE);
        } else {
@@ -136,7 +136,7 @@ static void coalesce(uint64_t final_stats[FR_RADIUS_MAX_PACKET_CODE], rlm_stats_
                if (other == t) continue;
 
                tree = (rbtree_t **) (((uint8_t *) other) + tree_offset);
-               stats = rbtree_finddata(*tree, mydata);
+               stats = rbtree_find_data(*tree, mydata);
                if (!stats) {
                        continue;
                }
@@ -186,7 +186,7 @@ static unlang_action_t CC_HINT(nonnull) mod_stats(rlm_rcode_t *p_result, module_
                 *      Update source statistics
                 */
                mydata.ipaddr = request->packet->socket.inet.src_ipaddr;
-               stats = rbtree_finddata(t->src, &mydata);
+               stats = rbtree_find_data(t->src, &mydata);
                if (!stats) {
                        MEM(stats = talloc_zero(t, rlm_stats_data_t));
 
@@ -204,7 +204,7 @@ static unlang_action_t CC_HINT(nonnull) mod_stats(rlm_rcode_t *p_result, module_
                 *      Update destination statistics
                 */
                mydata.ipaddr = request->packet->socket.inet.dst_ipaddr;
-               stats = rbtree_finddata(t->dst, &mydata);
+               stats = rbtree_find_data(t->dst, &mydata);
                if (!stats) {
                        MEM(stats = talloc_zero(t, rlm_stats_data_t));
 
index ac3303bba1c3dd1ab6121cab835f45ff20e4fd0a..9d80549a73f6c02f3096e51685ad852ebb406532 100644 (file)
@@ -331,7 +331,7 @@ fr_radius_packet_t *fr_packet_list_find(fr_packet_list_t *pl, fr_radius_packet_t
 {
        if (!pl || !request) return 0;
 
-       return rbtree_finddata(pl->tree, request);
+       return rbtree_find_data(pl->tree, request);
 }
 
 
@@ -373,7 +373,7 @@ fr_radius_packet_t *fr_packet_list_find_byreply(fr_packet_list_t *pl, fr_radius_
        my_request.id = reply->id;
        request = &my_request;
 
-       return rbtree_finddata(pl->tree, request);
+       return rbtree_find_data(pl->tree, request);
 }
 
 
@@ -727,9 +727,9 @@ fr_radius_packet_t *fr_packet_list_recv(fr_packet_list_t *pl, fd_set *set, uint3
        return NULL;
 }
 
-uint32_t fr_packet_list_num_incoming(fr_packet_list_t *pl)
+uint64_t fr_packet_list_num_incoming(fr_packet_list_t *pl)
 {
-       uint32_t num_elements;
+       uint64_t num_elements;
 
        if (!pl) return 0;
 
index 273682f04243050e5d6f211427c9578990e8aed1..5481918534ab933d6f347474c1b197486678a52a 100644 (file)
@@ -57,7 +57,7 @@ bool fr_packet_list_socket_thaw(fr_packet_list_t *pl, int sockfd);
 int fr_packet_list_fd_set(fr_packet_list_t *pl, fd_set *set);
 fr_radius_packet_t *fr_packet_list_recv(fr_packet_list_t *pl, fd_set *set, uint32_t max_attributes, bool require_ma);
 
-uint32_t fr_packet_list_num_incoming(fr_packet_list_t *pl);
+uint64_t fr_packet_list_num_incoming(fr_packet_list_t *pl);
 uint32_t fr_packet_list_num_outgoing(fr_packet_list_t *pl);
 
 void fr_packet_header_log(fr_log_t const *log, fr_radius_packet_t *packet, bool received);
index eb39777fc68657efb0e0ffc906473e9c76bb2ece..c6b3a1677fc2b7470250a56db028128a07025c1d 100644 (file)
@@ -168,7 +168,7 @@ again:
         * For testing deletebydata instead
 
         for (i = 0; i < n; i++) {
-               if (filter_cb(&vals[i], &thresh) == 2) rbtree_deletebydata(t, &vals[i]);
+               if (filter_cb(&vals[i], &thresh) == 2) rbtree_delete_by_data(t, &vals[i]);
         }
 
         *