---
name: "radcli_avp_iter_next"
section: "3"
platform: "linux"
package: "radcli"
version: "2.0.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/radcli_avp_iter_next"
---

# radcli\_avp\_iter\_next(3)

Return the current attribute and advance.

## NAME

radcli\_avp\_iter\_next - Return the current attribute and advance.

## SYNOPSIS

```
#include <radcli/>

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/3.md), [radcli\_avp\_add\_bytes\_by\_num(3)](/radcli_avp_add_bytes_by_num/3.md), [radcli\_avp\_add\_gigawords64(3)](/radcli_avp_add_gigawords64/3.md), [radcli\_avp\_add\_gigawords64\_by\_num(3)](/radcli_avp_add_gigawords64_by_num/3.md), [radcli\_avp\_add\_ip4(3)](/radcli_avp_add_ip4/3.md), [radcli\_avp\_add\_ip4\_by\_num(3)](/radcli_avp_add_ip4_by_num/3.md), [radcli\_avp\_add\_ip4prefix(3)](/radcli_avp_add_ip4prefix/3.md), [radcli\_avp\_add\_ip4prefix\_by\_num(3)](/radcli_avp_add_ip4prefix_by_num/3.md), [radcli\_avp\_add\_ip6(3)](/radcli_avp_add_ip6/3.md), [radcli\_avp\_add\_ip6\_by\_num(3)](/radcli_avp_add_ip6_by_num/3.md), [radcli\_avp\_add\_str(3)](/radcli_avp_add_str/3.md), [radcli\_avp\_add\_str\_by\_num(3)](/radcli_avp_add_str_by_num/3.md), [radcli\_avp\_add\_uint32(3)](/radcli_avp_add_uint32/3.md), [radcli\_avp\_add\_uint32\_by\_num(3)](/radcli_avp_add_uint32_by_num/3.md), [radcli\_avp\_add\_uint64(3)](/radcli_avp_add_uint64/3.md), [radcli\_avp\_add\_uint64\_by\_num(3)](/radcli_avp_add_uint64_by_num/3.md), [radcli\_avp\_add\_username(3)](/radcli_avp_add_username/3.md), [radcli\_avp\_concat\_str(3)](/radcli_avp_concat_str/3.md), [radcli\_avp\_concat\_str\_by\_num(3)](/radcli_avp_concat_str_by_num/3.md), [radcli\_avp\_def(3)](/radcli_avp_def/3.md), [radcli\_avp\_get(3)](/radcli_avp_get/3.md), [radcli\_avp\_get\_by\_num(3)](/radcli_avp_get_by_num/3.md), [radcli\_avp\_get\_bytes(3)](/radcli_avp_get_bytes/3.md), [radcli\_avp\_get\_bytes\_by\_num(3)](/radcli_avp_get_bytes_by_num/3.md), [radcli\_avp\_get\_cstr(3)](/radcli_avp_get_cstr/3.md), [radcli\_avp\_get\_cstr\_by\_num(3)](/radcli_avp_get_cstr_by_num/3.md), [radcli\_avp\_get\_gigawords64(3)](/radcli_avp_get_gigawords64/3.md), [radcli\_avp\_get\_gigawords64\_by\_num(3)](/radcli_avp_get_gigawords64_by_num/3.md), [radcli\_avp\_get\_ip4prefix(3)](/radcli_avp_get_ip4prefix/3.md), [radcli\_avp\_get\_ip4prefix\_by\_num(3)](/radcli_avp_get_ip4prefix_by_num/3.md), [radcli\_avp\_get\_ip6(3)](/radcli_avp_get_ip6/3.md), [radcli\_avp\_get\_ip6\_by\_num(3)](/radcli_avp_get_ip6_by_num/3.md), [radcli\_avp\_get\_uint32(3)](/radcli_avp_get_uint32/3.md), [radcli\_avp\_get\_uint32\_by\_num(3)](/radcli_avp_get_uint32_by_num/3.md), [radcli\_avp\_get\_uint64(3)](/radcli_avp_get_uint64/3.md), [radcli\_avp\_get\_uint64\_by\_num(3)](/radcli_avp_get_uint64_by_num/3.md), [radcli\_avp\_list\_error(3)](/radcli_avp_list_error/3.md), [radcli\_avp\_list\_free(3)](/radcli_avp_list_free/3.md), [radcli\_avp\_list\_iter(3)](/radcli_avp_list_iter/3.md), [radcli\_avp\_list\_new(3)](/radcli_avp_list_new/3.md)*
