* Cancel all outgoing packets. Don't bother updating the tree or the free list, as all of the
* entries will be deleted when the memory is freed.
*/
- while ((item = fr_rb_iter_init_inorder(&iter, &my->rb)) != NULL) {
- fr_rb_iter_delete_inorder(&iter);
+ while ((item = fr_rb_iter_init_inorder(&my->rb, &iter)) != NULL) {
+ fr_rb_iter_delete_inorder(&my->rb, &iter);
my->release((fr_bio_t *) my, item, FR_BIO_DEDUP_CANCELLED);
}
if (nr->suspended) return;
- for (s = fr_rb_iter_init_inorder(&iter, nr->sockets);
+ for (s = fr_rb_iter_init_inorder(nr->sockets, &iter);
s != NULL;
- s = fr_rb_iter_next_inorder(&iter)) {
+ s = fr_rb_iter_next_inorder(nr->sockets, &iter)) {
fr_event_filter_update(s->nr->el, s->listen->fd, FR_EVENT_FILTER_IO, pause_read);
}
nr->suspended = true;
if (!nr->suspended) return;
- for (s = fr_rb_iter_init_inorder(&iter, nr->sockets);
+ for (s = fr_rb_iter_init_inorder(nr->sockets, &iter);
s != NULL;
- s = fr_rb_iter_next_inorder(&iter)) {
+ s = fr_rb_iter_next_inorder(nr->sockets, &iter)) {
fr_event_filter_update(s->nr->el, s->listen->fd, FR_EVENT_FILTER_IO, resume_read);
}
nr->suspended = false;
// @todo - note that this isn't thread-safe!
- for (s = fr_rb_iter_init_inorder(&iter, nr->sockets);
+ for (s = fr_rb_iter_init_inorder(nr->sockets, &iter);
s != NULL;
- s = fr_rb_iter_next_inorder(&iter)) {
+ s = fr_rb_iter_next_inorder(nr->sockets, &iter)) {
if (!s->listen->app_io->get_name) {
fprintf(fp, "%s\n", s->listen->app_io->common.name);
} else {
live->skip = skip->id;
pthread_mutex_lock(&cluster->mutex);
- for (node = fr_rb_iter_init_inorder(&iter, cluster->used_nodes);
+ for (node = fr_rb_iter_init_inorder(cluster->used_nodes, &iter);
node;
- node = fr_rb_iter_next_inorder(&iter)) {
+ node = fr_rb_iter_next_inorder(cluster->used_nodes, &iter)) {
fr_assert(node->pool);
if (live->skip == node->id) continue; /* Skip dead nodes */
pthread_mutex_lock(&cluster->mutex);
- for (node = fr_rb_iter_init_inorder(&iter, cluster->used_nodes);
+ for (node = fr_rb_iter_init_inorder(cluster->used_nodes, &iter);
node;
- node = fr_rb_iter_next_inorder(&iter)) {
+ node = fr_rb_iter_next_inorder(cluster->used_nodes, &iter)) {
if ((is_master && node->is_master) || (is_slave && !node->is_master)) found[count++] = node->addr;
}
pthread_mutex_lock(&cluster->mutex);
- for (node = fr_rb_iter_init_inorder(&iter, cluster->used_nodes);
+ for (node = fr_rb_iter_init_inorder(cluster->used_nodes, &iter);
node;
- node = fr_rb_iter_next_inorder(&iter)) {
+ node = fr_rb_iter_next_inorder(cluster->used_nodes, &iter)) {
conn = fr_pool_connection_get(node->pool, NULL);
if (!conn) continue;
if (!ci->ident2) return 0;
- for (ci = fr_rb_iter_init_inorder(&iter, ci->ident2);
+ for (ci = fr_rb_iter_init_inorder(ci->ident2, &iter);
ci;
- ci = fr_rb_iter_next_inorder(&iter)) {
+ ci = fr_rb_iter_next_inorder(ci->ident2, &iter)) {
/*
* We're walking ident2, not all of the items will be data
*/
void *data;
WARN("Refusing to cleanup dl loader, the following modules are still in use:");
- for (data = fr_rb_iter_init_inorder(&iter, dl_module_l->module_tree);
+ for (data = fr_rb_iter_init_inorder(dl_module_l->module_tree, &iter);
data;
- data = fr_rb_iter_next_inorder(&iter)) {
+ data = fr_rb_iter_next_inorder(dl_module_l->module_tree, &iter)) {
dl_module_t *module = talloc_get_type_abort(data, dl_module_t);
WARN(" %s", module->exported->name);
* they would be bootstrapped or inserted
* into the tree.
*/
- for (inst = fr_rb_iter_init_inorder(&iter, ml->name_tree);
+ for (inst = fr_rb_iter_init_inorder(ml->name_tree, &iter);
inst;
- inst = fr_rb_iter_next_inorder(&iter)) {
+ inst = fr_rb_iter_next_inorder(ml->name_tree, &iter)) {
module_instance_debug(inst);
}
}
* finding and extracting their thread specific
* data, and calling their detach methods.
*/
- for (inst = fr_rb_iter_init_inorder(&iter, ml->name_tree);
+ for (inst = fr_rb_iter_init_inorder(ml->name_tree, &iter);
inst;
- inst = fr_rb_iter_next_inorder(&iter)) {
+ inst = fr_rb_iter_next_inorder(ml->name_tree, &iter)) {
module_instance_t *mi = talloc_get_type_abort(inst, module_instance_t);
module_thread_instance_t *ti = module_thread(mi);
if (unlikely(ret < 0)) return ret;
}
- for (inst = fr_rb_iter_init_inorder(&iter, ml->name_tree);
+ for (inst = fr_rb_iter_init_inorder(ml->name_tree, &iter);
inst;
- inst = fr_rb_iter_next_inorder(&iter)) {
+ inst = fr_rb_iter_next_inorder(ml->name_tree, &iter)) {
module_instance_t *mi = talloc_get_type_abort(inst, module_instance_t); /* Sanity check*/
if (module_thread_instantiate(ctx, mi, el) < 0) {
DEBUG2("#### Instantiating %s modules ####", ml->name);
- for (inst = fr_rb_iter_init_inorder(&iter, ml->name_tree);
+ for (inst = fr_rb_iter_init_inorder(ml->name_tree, &iter);
inst;
- inst = fr_rb_iter_next_inorder(&iter)) {
+ inst = fr_rb_iter_next_inorder(ml->name_tree, &iter)) {
module_instance_t *mi = talloc_get_type_abort(inst, module_instance_t);
if (module_instantiate(mi) < 0) return -1;
}
DEBUG2("#### Bootstrapping %s modules ####", ml->name);
- for (instance = fr_rb_iter_init_inorder(&iter, ml->name_tree);
+ for (instance = fr_rb_iter_init_inorder(ml->name_tree, &iter);
instance;
- instance = fr_rb_iter_next_inorder(&iter)) {
+ instance = fr_rb_iter_next_inorder(ml->name_tree, &iter)) {
module_instance_t *mi = talloc_get_type_abort(instance, module_instance_t);
if (module_bootstrap(mi) < 0) return -1;
}
* tree. It can cause problems when we delete children
* without the iterator knowing about it.
*/
- while ((mi = fr_rb_iter_init_inorder(&iter, ml->name_tree)) != NULL) {
- fr_rb_iter_delete_inorder(&iter); /* Keeps the iterator sane */
+ while ((mi = fr_rb_iter_init_inorder(ml->name_tree, &iter)) != NULL) {
+ fr_rb_iter_delete_inorder(ml->name_tree, &iter); /* Keeps the iterator sane */
talloc_free(mi);
}
* register our redundant xlats. But only when all of
* the items in such a section are the same.
*/
- for (vm = fr_rb_iter_init_inorder(&iter, module_rlm_virtual_name_tree);
+ for (vm = fr_rb_iter_init_inorder(module_rlm_virtual_name_tree, &iter);
vm;
- vm = fr_rb_iter_next_inorder(&iter)) {
+ vm = fr_rb_iter_next_inorder(module_rlm_virtual_name_tree, &iter)) {
if (!vm->all_same) continue;
if (xlat_register_redundant(vm->cs) < 0) return -1;
/*
* Instantiate each instruction with thread-specific data.
*/
- for (instruction = fr_rb_iter_init_inorder(&iter, unlang_instruction_tree);
+ for (instruction = fr_rb_iter_init_inorder(unlang_instruction_tree, &iter);
instruction;
- instruction = fr_rb_iter_next_inorder(&iter)) {
+ instruction = fr_rb_iter_next_inorder(unlang_instruction_tree, &iter)) {
unlang_op_t *op;
unlang_thread_array[instruction->number].instruction = instruction;
if (!xlat_root) return; /* All xlats have already been freed */
- for (c = fr_rb_iter_init_inorder(&iter, xlat_root);
+ for (c = fr_rb_iter_init_inorder(xlat_root, &iter);
c;
- c = fr_rb_iter_next_inorder(&iter)) {
+ c = fr_rb_iter_next_inorder(xlat_root, &iter)) {
if (!c->mctx) continue;
if (c->mctx->mi != inst) continue;
- fr_rb_iter_delete_inorder(&iter);
+ fr_rb_iter_delete_inorder(xlat_root, &iter);
}
}
fr_sbuff_marker(&name_start, name);
- mrx = fr_rb_iter_init_inorder(&iter, mrx_tree);
-
/*
* Iterate over the all the xlats, registered by
* all the modules in the section.
*/
+ mrx = fr_rb_iter_init_inorder(mrx_tree, &iter);
+
while (mrx) {
xlat_t *xlat;
xlat_func_flags_t flags = default_flags;
if (!mrx->xlat->flags.pure) flags &= ~XLAT_FUNC_FLAG_PURE;
xlat_redundant_add_xlat(xr, mrx->xlat);
prev_mrx = mrx;
- } while ((mrx = fr_rb_iter_next_inorder(&iter)) && (module_xlat_cmp(prev_mrx, mrx) == 0));
+ } while ((mrx = fr_rb_iter_next_inorder(mrx_tree, &iter)) && (module_xlat_cmp(prev_mrx, mrx) == 0));
/*
* Warn, but allow, redundant/failover expansions that are
fprintf(stderr, "DEPENDENTS FOR %s\n", dict->root->name);
- for (dep = fr_rb_iter_init_inorder(&iter, dict->dependents);
+ for (dep = fr_rb_iter_init_inorder(dict->dependents, &iter);
dep;
- dep = fr_rb_iter_next_inorder(&iter)) {
+ dep = fr_rb_iter_next_inorder(dict->dependents, &iter)) {
fprintf(stderr, "\t<- %s (%d)\n", dep->dependent, dep->count);
}
}
fr_strerror_printf("Refusing to free dictionary \"%s\", still has dependents", dict->root->name);
- for (dep = fr_rb_iter_init_inorder(&iter, dict->dependents);
+ for (dep = fr_rb_iter_init_inorder(dict->dependents, &iter);
dep;
- dep = fr_rb_iter_next_inorder(&iter)) {
+ dep = fr_rb_iter_next_inorder(dict->dependents, &iter)) {
fr_strerror_printf_push("%s (%d)", dep->dependent, dep->count);
}
for (dict = fr_hash_table_iter_init(gctx->protocol_by_num, &dict_iter);
dict;
dict = fr_hash_table_iter_next(gctx->protocol_by_num, &dict_iter)) {
- for (dep = fr_rb_iter_init_inorder(&dep_iter, dict->dependents);
+ for (dep = fr_rb_iter_init_inorder(dict->dependents, &dep_iter);
dep;
- dep = fr_rb_iter_next_inorder(&dep_iter)) {
+ dep = fr_rb_iter_next_inorder(dict->dependents, &dep_iter)) {
fprintf(fp, "\t%s is referenced from %s count (%d)\n",
dict->root->name, dep->dependent, dep->count);
}
}
if (gctx->internal) {
- for (dep = fr_rb_iter_init_inorder(&dep_iter, gctx->internal->dependents);
+ for (dep = fr_rb_iter_init_inorder(gctx->internal->dependents, &dep_iter);
dep;
- dep = fr_rb_iter_next_inorder(&dep_iter)) {
+ dep = fr_rb_iter_next_inorder(gctx->internal->dependents, &dep_iter)) {
fprintf(fp, "\t%s is referenced from %s count (%d)\n",
gctx->internal->root->name, dep->dependent, dep->count);
}
/*
* Yes, this is the correct call order
*/
- for (data = fr_rb_iter_init_inorder(&iter, dl_loader->tree);
+ for (data = fr_rb_iter_init_inorder(dl_loader->tree, &iter);
data;
- data = fr_rb_iter_next_inorder(&iter)) {
+ data = fr_rb_iter_next_inorder(dl_loader->tree, &iter)) {
dl_t *dl = talloc_get_type_abort(data, dl_t);
fr_strerror_printf_push(" %s (%zu)", dl->name, talloc_reference_count(dl));
/** Initialise an in-order iterator
*
- * @param[out] iter to initialise.
* @param[in] tree to iterate over.
+ * @param[out] iter to initialise.
* @return
* - The first node. Mutex will be held.
* - NULL if the tree is empty.
*/
-void *fr_rb_iter_init_inorder(fr_rb_iter_inorder_t *iter, fr_rb_tree_t *tree)
+void *fr_rb_iter_init_inorder(fr_rb_tree_t *tree, fr_rb_iter_inorder_t *iter)
{
fr_rb_node_t *x = tree->root;
while (x->left != NIL) x = x->left;
*iter = (fr_rb_iter_inorder_t){
- .tree = tree,
.node = x
};
/** Return the next node
*
+ * @param[in] tree to iterate over.
* @param[in] iter previously initialised with #fr_rb_iter_init_inorder
* @return
* - The next node.
* - NULL if no more nodes remain.
*/
-void *fr_rb_iter_next_inorder(fr_rb_iter_inorder_t *iter)
+void *fr_rb_iter_next_inorder(UNUSED fr_rb_tree_t *tree, fr_rb_iter_inorder_t *iter)
{
fr_rb_node_t *x = iter->node, *y;
*
* @note Only makes sense for in-order traversals.
*
+ * @param[in] tree to iterate over.
* @param[in] iter previously initialised with #fr_rb_iter_init_inorder
*/
-void fr_rb_iter_delete_inorder(fr_rb_iter_inorder_t *iter)
+void fr_rb_iter_delete_inorder(fr_rb_tree_t *tree, fr_rb_iter_inorder_t *iter)
{
fr_rb_node_t *x = iter->node;
if (unlikely(x == NIL)) return;
- (void) fr_rb_iter_next_inorder(iter);
+ (void) fr_rb_iter_next_inorder(tree, iter);
iter->next = iter->node;
iter->node = NULL;
- delete_internal(iter->tree, x, true);
+ delete_internal(tree, x, true);
}
/** Initialise a pre-order iterator
*
- * @param[out] iter to initialise.
* @param[in] tree to iterate over.
+ * @param[out] iter to initialise.
* @return
* - The first node. Mutex will be held.
* - NULL if the tree is empty.
*/
-void *fr_rb_iter_init_preorder(fr_rb_iter_preorder_t *iter, fr_rb_tree_t *tree)
+void *fr_rb_iter_init_preorder(fr_rb_tree_t *tree, fr_rb_iter_preorder_t *iter)
{
fr_rb_node_t *x = tree->root;
* First, the root.
*/
*iter = (fr_rb_iter_preorder_t){
- .tree = tree,
.node = x
};
/** Return the next node
*
+ * @param[in] tree to iterate over.
* @param[in] iter previously initialised with #fr_rb_iter_init_preorder
* @return
* - The next node.
* - NULL if no more nodes remain.
*/
-void *fr_rb_iter_next_preorder(fr_rb_iter_preorder_t *iter)
+void *fr_rb_iter_next_preorder(UNUSED fr_rb_tree_t *tree, fr_rb_iter_preorder_t *iter)
{
fr_rb_node_t *x = iter->node, *y;
/** Initialise a post-order iterator
*
- * @param[out] iter to initialise.
* @param[in] tree to iterate over.
+ * @param[out] iter to initialise.
* @return
* - The first node.
* - NULL if the tree is empty.
*/
-void *fr_rb_iter_init_postorder(fr_rb_iter_postorder_t *iter, fr_rb_tree_t *tree)
+void *fr_rb_iter_init_postorder(fr_rb_tree_t *tree, fr_rb_iter_postorder_t *iter)
{
fr_rb_node_t *x = tree->root;
}
*iter = (fr_rb_iter_postorder_t){
- .tree = tree,
.node = x
};
/** Return the next node
*
+ * @param[in] tree to iterate over.
* @param[in] iter previously initialised with #fr_rb_iter_init_postorder
* @return
* - The next node.
* - NULL if no more nodes remain.
*/
-void *fr_rb_iter_next_postorder(fr_rb_iter_postorder_t *iter)
+void *fr_rb_iter_next_postorder(UNUSED fr_rb_tree_t *tree, fr_rb_iter_postorder_t *iter)
{
fr_rb_node_t *x = iter->node, *y;
fr_rb_iter_##_order##_t iter; \
void *item, **list; \
if (unlikely(!(list = talloc_array(ctx, void *, num)))) return -1; \
- for (item = fr_rb_iter_init_##_order(&iter, tree), i = 0; \
+ for (item = fr_rb_iter_init_##_order(tree, &iter), i = 0; \
item; \
- item = fr_rb_iter_next_##_order(&iter), i++) list[i] = item; \
+ item = fr_rb_iter_next_##_order(tree, &iter), i++) list[i] = item; \
*out = list; \
return 0; \
}
/** Iterator structure for in-order traversal of an rbtree
*/
typedef struct {
- fr_rb_tree_t *tree; //!< Tree being iterated over.
fr_rb_node_t *node; ///< current node--set to NULL (not NIL) by fr_rb_iter_delete()
fr_rb_node_t *next; ///< if non-NULL, next node cached by fr_rb_iter_delete()
} fr_rb_iter_inorder_t;
-void *fr_rb_iter_init_inorder(fr_rb_iter_inorder_t *iter, fr_rb_tree_t *tree) CC_HINT(nonnull);
+void *fr_rb_iter_init_inorder(fr_rb_tree_t *tree, fr_rb_iter_inorder_t *iter) CC_HINT(nonnull);
-void *fr_rb_iter_next_inorder(fr_rb_iter_inorder_t *iter) CC_HINT(nonnull);
+void *fr_rb_iter_next_inorder(fr_rb_tree_t *tree, fr_rb_iter_inorder_t *iter) CC_HINT(nonnull);
-void fr_rb_iter_delete_inorder(fr_rb_iter_inorder_t *iter) CC_HINT(nonnull);
+void fr_rb_iter_delete_inorder(fr_rb_tree_t *tree, fr_rb_iter_inorder_t *iter) CC_HINT(nonnull);
#define fr_rb_inorder_foreach(_tree, _type, _iter) \
{ \
fr_rb_iter_inorder_t _state; \
- for (_type *_iter = fr_rb_iter_init_inorder(&_state, _tree); _iter; _iter = fr_rb_iter_next_inorder(&_state))
+ for (_type *_iter = fr_rb_iter_init_inorder(_tree, &_state); _iter; _iter = fr_rb_iter_next_inorder(_tree, &_state))
/** Iterator structure for pre-order traversal of an rbtree
*/
typedef struct {
- fr_rb_tree_t *tree; //!< Tree being iterated over.
fr_rb_node_t *node; ///< current node
} fr_rb_iter_preorder_t;
-void *fr_rb_iter_init_preorder(fr_rb_iter_preorder_t *iter, fr_rb_tree_t *tree) CC_HINT(nonnull);
+void *fr_rb_iter_init_preorder(fr_rb_tree_t *tree, fr_rb_iter_preorder_t *iter) CC_HINT(nonnull);
-void *fr_rb_iter_next_preorder(fr_rb_iter_preorder_t *iter) CC_HINT(nonnull);
+void *fr_rb_iter_next_preorder(fr_rb_tree_t *tree, fr_rb_iter_preorder_t *iter) CC_HINT(nonnull);
#define fr_rb_preorder_foreach(_tree, _type, _iter) \
{ \
fr_rb_iter_preorder_t _state; \
- for (_type *_iter = fr_rb_iter_init_preorder(&_state, _tree); _iter; _iter = fr_rb_iter_next_preorder(&_state))
+ for (_type *_iter = fr_rb_iter_init_preorder(_tree, &_state); _iter; _iter = fr_rb_iter_next_preorder(_tree, &_state))
/** Iterator structure for post-order traversal of an rbtree
*/
typedef struct {
- fr_rb_tree_t *tree; //!< Tree being iterated over.
fr_rb_node_t *node; ///< current node
} fr_rb_iter_postorder_t;
-void *fr_rb_iter_init_postorder(fr_rb_iter_postorder_t *iter, fr_rb_tree_t *tree) CC_HINT(nonnull);
+void *fr_rb_iter_init_postorder(fr_rb_tree_t *tree, fr_rb_iter_postorder_t *iter) CC_HINT(nonnull);
-void *fr_rb_iter_next_postorder(fr_rb_iter_postorder_t *iter) CC_HINT(nonnull);
+void *fr_rb_iter_next_postorder(fr_rb_tree_t *tree, fr_rb_iter_postorder_t *iter) CC_HINT(nonnull);
#define fr_rb_postorder_foreach(_tree, _type, _iter) \
{ \
fr_rb_iter_postorder_t _state; \
- for (_type *_iter = fr_rb_iter_init_postorder(&_state, _tree); _iter; _iter = fr_rb_iter_next_postorder(&_state))
+ for (_type *_iter = fr_rb_iter_init_postorder(_tree, &_state); _iter; _iter = fr_rb_iter_next_postorder(_tree, &_state))
int fr_rb_flatten_inorder(TALLOC_CTX *ctx, void **out[], fr_rb_tree_t *tree);
qsort(sorted, n, sizeof(fr_rb_tree_test_node_t), fr_rb_qsort_cmp);
- for (p = fr_rb_iter_init_inorder(&iter, t), i = 0;
+ for (p = fr_rb_iter_init_inorder(t, &iter), i = 0;
p;
- p = fr_rb_iter_next_inorder(&iter), i++) {
+ p = fr_rb_iter_next_inorder(t, &iter), i++) {
TEST_MSG("Checking sorted[%zu] s = %u vs n = %u", i, sorted[i].num, p->num);
TEST_CHECK(sorted[i].num == p->num);
}
fr_rb_insert(t, p);
}
- for (p = fr_rb_iter_init_preorder(&iter, t), i = 0;
+ for (p = fr_rb_iter_init_preorder(t, &iter), i = 0;
p;
- p = fr_rb_iter_next_preorder(&iter), i++) {
+ p = fr_rb_iter_next_preorder(t, &iter), i++) {
TEST_MSG("Checking pre_output[%zu] = %u vs n = %u", i, pre_output[i], p->num);
TEST_CHECK(pre_output[i] == p->num);
}
fr_rb_insert(t, p);
}
- for (p = fr_rb_iter_init_postorder(&iter, t), i = 0;
+ for (p = fr_rb_iter_init_postorder(t, &iter), i = 0;
p;
- p = fr_rb_iter_next_postorder(&iter), i++) {
+ p = fr_rb_iter_next_postorder(t, &iter), i++) {
TEST_MSG("Checking post_output[%zu] s = %u vs n = %u", i, post_output[i], p->num);
TEST_CHECK(post_output[i] == p->num);
}
/*
* Remove the primes.
*/
- for (p = fr_rb_iter_init_inorder(&iter, t);
+ for (p = fr_rb_iter_init_inorder(t, &iter);
p;
- p = fr_rb_iter_next_inorder(&iter)) {
- if (is_prime(p->num)) fr_rb_iter_delete_inorder(&iter);
+ p = fr_rb_iter_next_inorder(t, &iter)) {
+ if (is_prime(p->num)) fr_rb_iter_delete_inorder(t, &iter);
}
/*
* Check that all the non-primes are still there.
*/
- for (p = fr_rb_iter_init_inorder(&iter, t), i = 0;
+ for (p = fr_rb_iter_init_inorder(t, &iter), i = 0;
p;
- p = fr_rb_iter_next_inorder(&iter), i++) {
+ p = fr_rb_iter_next_inorder(t, &iter), i++) {
TEST_MSG("Checking non_primes[%zu] = %u vs p->num = %u", i, non_primes[i], p->num);
TEST_CHECK(non_primes[i] == p->num);
}
EVENT_DEBUG(" events %5s - %5s : %zu", decade_names[i - 1], decade_names[i], array[i]);
}
- for (node = fr_rb_iter_init_inorder(&event_iter, locations[i]);
+ for (node = fr_rb_iter_init_inorder(locations[i], &event_iter);
node;
- node = fr_rb_iter_next_inorder(&event_iter)) {
+ node = fr_rb_iter_next_inorder(locations[i], &event_iter)) {
fr_event_counter_t *counter = talloc_get_type_abort(node, fr_event_counter_t);
EVENT_DEBUG(" : %u allocd at %s[%d]",
/*
* Walk over the list of peers, associating them with this listener.
*/
- for (peer = fr_rb_iter_init_inorder(&iter, inst->peers);
+ for (peer = fr_rb_iter_init_inorder(inst->peers, &iter);
peer != NULL;
- peer = fr_rb_iter_next_inorder(&iter)) {
+ peer = fr_rb_iter_next_inorder(inst->peers, &iter)) {
if (peer->client.ipaddr.af != inst->ipaddr.af) continue;
if (peer->inst) continue;
/*
* Walk over the list of peers, associating them with this listener.
*/
- for (peer = fr_rb_iter_init_inorder(&iter, inst->peers);
+ for (peer = fr_rb_iter_init_inorder(inst->peers, &iter);
peer != NULL;
- peer = fr_rb_iter_next_inorder(&iter)) {
+ peer = fr_rb_iter_next_inorder(inst->peers, &iter)) {
if (peer->inst != inst) continue;
peer->el = el;
fr_rb_iter_inorder_t iter;
void *data;
- for (data = fr_rb_iter_init_inorder(&iter, mutable->cache);
+ for (data = fr_rb_iter_init_inorder(mutable->cache, &iter);
data;
- data = fr_rb_iter_next_inorder(&iter)) {
- fr_rb_iter_delete_inorder(&iter);
+ data = fr_rb_iter_next_inorder(mutable->cache, &iter)) {
+ fr_rb_iter_delete_inorder(mutable->cache, &iter);
talloc_free(data);
}
}
* automatic subroutine names based on section name.
*/
if (!inst->funcs_init) fr_rb_inline_init(&inst->funcs, lua_func_def_t, node, lua_func_def_cmp, NULL);
- func = fr_rb_iter_init_inorder(&iter, &inst->funcs);
- while (func) {
+
+ for (func = fr_rb_iter_init_inorder(&inst->funcs, &iter);
+ func != NULL;
+ func = fr_rb_iter_next_inorder(&inst->funcs, &iter)) {
/*
* Check for func_<name1>_<name2> or func_<name1> config pairs.
*/
return -1;
}
}
-
- func = fr_rb_iter_next_inorder(&iter);
}
if (inst->func_instantiate) {
}
if (!inst->funcs_init) fr_rb_inline_init(&inst->funcs, mruby_func_def_t, node, mruby_func_def_cmp, NULL);
- func = fr_rb_iter_init_inorder(&iter, &inst->funcs);
- while (func) {
+
+ for (func = fr_rb_iter_init_inorder(&inst->funcs, &iter);
+ func != NULL;
+ func = fr_rb_iter_next_inorder(&inst->funcs, &iter)) {
/*
* Check for func_<name1>_<name2> or func_<name1> config pairs.
*/
return -1;
}
}
-
- func = fr_rb_iter_next_inorder(&iter);
}
if (mrb_nil_p(mrb_check_intern_cstr(mrb, "instantiate"))) return 0;
* automatic subroutine names based on section name.
*/
if (!inst->funcs_init) fr_rb_inline_init(&inst->funcs, perl_func_def_t, node, perl_func_def_cmp, NULL);
- func = fr_rb_iter_init_inorder(&iter, &inst->funcs);
- while (func) {
+
+ for (func = fr_rb_iter_init_inorder(&inst->funcs, &iter);
+ func != NULL;
+ func = fr_rb_iter_next_inorder(&inst->funcs, &iter)) {
/*
* Check for func_<name1>_<name2> or func_<name1> config pairs.
*/
cf_log_err(cp, "Perl subroutine %s does not exist", func->function_name);
return -1;
}
- }
-
- func = fr_rb_iter_next_inorder(&iter);
+ }
}
PL_endav = end_AV;
/*
* Load all the Python functions found by the call_env parser.
*/
- func = fr_rb_iter_init_inorder(&iter, &inst->funcs);
- while (func) {
+ for (func = fr_rb_iter_init_inorder(&inst->funcs, &iter);
+ func != NULL;
+ func = fr_rb_iter_next_inorder(&inst->funcs, &iter)) {
/*
* Check for mod_<name1>_<name2> or mod_<name1> config pairs.
* If neither exist, fall back to default Python module.
if (cp) func->function_name = cf_pair_value(cp);
if (python_function_load(mctx, func) < 0) goto error;
- func = fr_rb_iter_next_inorder(&iter);
}
/*
PYTHON_FUNC_DESTROY(instantiate);
PYTHON_FUNC_DESTROY(detach);
- func = fr_rb_iter_init_inorder(&iter, &inst->funcs);
- while (func) {
+ for (func = fr_rb_iter_init_inorder(&inst->funcs, &iter);
+ func != NULL;
+ func = fr_rb_iter_next_inorder(&inst->funcs, &iter)) {
python_function_destroy(func);
- func = fr_rb_iter_next_inorder(&iter);
}
PyEval_SaveThread();
/*
* Parse section configs from calls found by the call_env parser.
*/
- section = fr_rb_iter_init_inorder(&iter, &inst->sections);
- while (section) {
+ for (section = fr_rb_iter_init_inorder(&inst->sections, &iter);
+ section != NULL;
+ section = fr_rb_iter_next_inorder(&inst->sections, &iter)) {
if (parse_sub_section(inst, conf, section_config, §ion->section,
cf_section_name(section->cs), section->cs) < 0) return -1;
- section = fr_rb_iter_next_inorder(&iter);
}
inst->conn_config.reuse.num_children = 1;
*
*/
- for (node = fr_rb_iter_init_inorder(&iter, t);
+ for (node = fr_rb_iter_init_inorder(t, &iter);
node;
- node = fr_rb_iter_next_inorder(&iter)) {
- if ((node->num & mask) == (thresh.num & mask)) fr_rb_iter_delete_inorder(&iter);
+ node = fr_rb_iter_next_inorder(t, &iter)) {
+ if ((node->num & mask) == (thresh.num & mask)) fr_rb_iter_delete_inorder(t, &iter);
}
i = rbcount(t);
fprintf(stderr,"After delete rbcount is %i\n", i);
if (i < 0) return i;
cb_stored = 0;
- for (node = fr_rb_iter_init_inorder(&iter, t);
+ for (node = fr_rb_iter_init_inorder(t, &iter);
node;
- node = fr_rb_iter_next_inorder(&iter)) {
+ node = fr_rb_iter_next_inorder(t, &iter)) {
rvals[cb_stored++].num = node->num;
}