---
name: "radcli_avp_add_str"
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_add_str"
---

# radcli\_avp\_add\_str(3)

Append a string- or text-typed attribute.

## NAME

radcli\_avp\_add\_str - Append a string- or text-typed attribute.

## SYNOPSIS

```
#include <radcli/>

int radcli_avp_add_str(
    radcli_avp_list        *list,
    const radcli_attr_def  *def,
    const char             *value
);
```

## DESCRIPTION

Accepts both RADCLI\_TYPE\_STRING and RADCLI\_TYPE\_TEXT attributes. For RADCLI\_TYPE\_STRING, value's bytes are copied verbatim (opaque octets, no validation)  unchanged from this function's original behavior, so that a caller already using it against an attribute later retagged from "string" to "text" (RFC 8044 SS3.1) in the dictionary keeps working rather than starting to fail with the retag. For RADCLI\_TYPE\_TEXT, value must additionally be valid UTF-8; invalid UTF-8 is rejected rather than stored.

## PARAMETERS

- **list**

  destination list.

- **def**

  the attribute; must be RADCLI\_TYPE\_STRING or RADCLI\_TYPE\_TEXT.

- **value**

  a null-terminated string.

## RETURN VALUE

0 on success, -1 on failure (def is neither RADCLI\_TYPE\_STRING nor RADCLI\_TYPE\_TEXT, value is invalid UTF-8 for a RADCLI\_TYPE\_TEXT def, or as radcli\_avp\_add\_bytes()).

## 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\_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\_iter\_next*(3)](/radcli_avp_iter_next/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)
