radcli_avp_concat_str_by_num(3) Radius client library radcli_avp_concat_str_by_num(3)

radcli_avp_concat_str_by_num - Look up an attribute by legacy numeric ID and concatenate every occurrence into a bounded buffer.

#include <radcli/>

int radcli_avp_concat_str_by_num(
    char                   *buf,
    size_t                  buflen,
    const radcli_avp_list  *list,
    const radcli_ctx       *ctx,
    uint32_t                attrid,
    uint32_t                vendor,
    const char             *sep
);

The _by_num() wrapper for radcli_avp_concat_str(): equivalent to radcli_avp_concat_str(buf, buflen, l, radcli_dict_lookup_num(ctx, attrid,

vendor), sep), except that an unresolvable attribute ID is not itself a failure here it is treated the same as "no occurrence present" (buf set to an empty string, 0 returned), matching this function's legacy-ID convenience role: a caller passing a well-known PW_* constant should not have to separately handle "not in this dictionary" as an error case, the same way rc_aaa()'s msg never failed just because a reply had no Reply-Message.

destination buffer, or NULL to only compute the needed size; see radcli_avp_concat_str().
size of buf, in bytes; may be 0.
the list to search.
a context with a dictionary loaded.
the attribute ID (a PW_* constant, or a vendor type ID when vendor is non-zero).
the vendor PEN, or 0 for a standard attribute.
separator inserted between occurrences; NULL or "" for none.

the number of bytes the joined result occupies (excluding the NUL terminator), whether or not it fit in buf; 0 if attrid/vendor resolves to no attribute.

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_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_iter_next(3), radcli_avp_list_error(3), radcli_avp_list_free(3), radcli_avp_list_iter(3), radcli_avp_list_new(3)

2026-09-03 radcli