radcli_avp_iter_next(3) Radius client library radcli_avp_iter_next(3) NAME radcli_avp_iter_next - Return the current attribute and advance. SYNOPSIS #include const radcli_avp * radcli_avp_iter_next( radcli_avp_iter *it ); DESCRIPTION PARAMETERS it an iterator from radcli_avp_list_iter(). STRUCTURES Iterator over a radcli_avp_list. A plain value: construct with radcli_avp_list_iter(), advance with radcli_avp_iter_next(). No allocation, safe to copy, safe to run several independent iterators over the same list concurrently (as long as nothing mutates the list while any of them are in use see radcli_avp_list_st's locking note in lib/avp.c). Fields are an implementation detail; do not access them directly. Deliberately not opaque via an incomplete type: a two-pointer cursor belongs on the caller's stack at zero cost, the way any ccan/list or kernel list cursor does, not behind a heap allocation. Usage: radcli_avp_iterit=radcli_avp_list_iter(list); constradcli_avp*a; while((a=radcli_avp_iter_next(&it))!=NULL){ } struct radcli_avp_iter { const radcli_avp_list *list; const radcli_avp *cur; }; RETURN VALUE the current attribute, or NULL once the list is exhausted every subsequent call on the same it also returns NULL; it does not restart. SEE ALSO radcli_avp_add_bytes(3), radcli_avp_add_bytes_by_num(3), radcli_avp_add_gigawords64(3), radcli_avp_add_gigawords64_by_num(3), radcli_avp_add_ip4(3), radcli_avp_add_ip4_by_num(3), radcli_avp_add_ip4prefix(3), radcli_avp_add_ip4prefix_by_num(3), radcli_avp_add_ip6(3), radcli_avp_add_ip6_by_num(3), radcli_avp_add_str(3), radcli_avp_add_str_by_num(3), radcli_avp_add_uint32(3), radcli_avp_add_uint32_by_num(3), radcli_avp_add_uint64(3), radcli_avp_add_uint64_by_num(3), radcli_avp_add_username(3), radcli_avp_concat_str(3), radcli_avp_concat_str_by_num(3), radcli_avp_def(3), radcli_avp_get(3), radcli_avp_get_by_num(3), radcli_avp_get_bytes(3), radcli_avp_get_bytes_by_num(3), radcli_avp_get_cstr(3), radcli_avp_get_cstr_by_num(3), radcli_avp_get_gigawords64(3), radcli_avp_get_gigawords64_by_num(3), radcli_avp_get_ip4prefix(3), radcli_avp_get_ip4prefix_by_num(3), radcli_avp_get_ip6(3), radcli_avp_get_ip6_by_num(3), radcli_avp_get_uint32(3), radcli_avp_get_uint32_by_num(3), radcli_avp_get_uint64(3), radcli_avp_get_uint64_by_num(3), radcli_avp_list_error(3), radcli_avp_list_free(3), radcli_avp_list_iter(3), radcli_avp_list_new(3) radcli 2026-09-03 radcli_avp_iter_next(3)