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

# radcli2.h(3)

## NAME

radcli2.h -

## SYNOPSIS

```
#include <radcli/radcli2.h>
```

## DESCRIPTION

```
int            radcli_aaa(radcli_ctx *, radcli_code, const radcli_avp_list *, radcli_code *, radcli_avp_list **);
const char    *radcli_attr_def_name(const radcli_attr_def *);
int            radcli_attr_def_oid(const radcli_attr_def *, char *, size_t);
radcli_attr_type radcli_attr_def_type(const radcli_attr_def *);
int            radcli_avp_add_bytes(radcli_avp_list *, const radcli_attr_def *, const void *, size_t);
int            radcli_avp_add_bytes_by_num(radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, const void *, size_t);
int            radcli_avp_add_gigawords64(radcli_ctx *, radcli_avp_list *, const radcli_attr_def *, uint64_t);
int            radcli_avp_add_gigawords64_by_num(radcli_ctx *, radcli_avp_list *, uint32_t, uint32_t, uint64_t);
int            radcli_avp_add_ip4(radcli_avp_list *, const radcli_attr_def *, struct in_addr);
int            radcli_avp_add_ip4_by_num(radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, struct in_addr);
int            radcli_avp_add_ip4prefix(radcli_avp_list *, const radcli_attr_def *, struct in_addr, unsigned);
int            radcli_avp_add_ip4prefix_by_num(radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, struct in_addr, unsigned);
int            radcli_avp_add_ip6(radcli_avp_list *, const radcli_attr_def *, const struct in6_addr *, unsigned);
int            radcli_avp_add_ip6_by_num(radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, const struct in6_addr *, unsigned);
int            radcli_avp_add_str(radcli_avp_list *, const radcli_attr_def *, const char *);
int            radcli_avp_add_str_by_num(radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, const char *);
int            radcli_avp_add_uint32(radcli_avp_list *, const radcli_attr_def *, uint32_t);
int            radcli_avp_add_uint32_by_num(radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, uint32_t);
int            radcli_avp_add_uint64(radcli_avp_list *, const radcli_attr_def *, uint64_t);
int            radcli_avp_add_uint64_by_num(radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, uint64_t);
int            radcli_avp_add_username(radcli_avp_list *, const radcli_ctx *, const char *, const char *);
int            radcli_avp_concat_str(char *, size_t, const radcli_avp_list *, const radcli_attr_def *, const char *);
int            radcli_avp_concat_str_by_num(char *, size_t, const radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, const char *);
const radcli_attr_def*radcli_avp_def(const radcli_avp *);
const radcli_avp*radcli_avp_get(const radcli_avp_list *, const radcli_attr_def *, unsigned);
const radcli_avp*radcli_avp_get_by_num(const radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, unsigned);
int            radcli_avp_get_bytes(const radcli_avp *, const void **, size_t *);
int            radcli_avp_get_bytes_by_num(const radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, const void **, size_t *);
const char    *radcli_avp_get_cstr(const radcli_avp *);
const char    *radcli_avp_get_cstr_by_num(const radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t);
int            radcli_avp_get_gigawords64(const radcli_ctx *, const radcli_avp_list *, const radcli_attr_def *, uint64_t *);
int            radcli_avp_get_gigawords64_by_num(const radcli_ctx *, const radcli_avp_list *, uint32_t, uint32_t, uint64_t *);
int            radcli_avp_get_ip4prefix(const radcli_avp *, struct in_addr *, unsigned *);
int            radcli_avp_get_ip4prefix_by_num(const radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, struct in_addr *, unsigned *);
int            radcli_avp_get_ip6(const radcli_avp *, struct in6_addr *, unsigned *);
int            radcli_avp_get_ip6_by_num(const radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, struct in6_addr *, unsigned *);
int            radcli_avp_get_uint32(const radcli_avp *, uint32_t *);
int            radcli_avp_get_uint32_by_num(const radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, uint32_t *);
int            radcli_avp_get_uint64(const radcli_avp *, uint64_t *);
int            radcli_avp_get_uint64_by_num(const radcli_avp_list *, const radcli_ctx *, uint32_t, uint32_t, uint64_t *);
const radcli_avp*radcli_avp_iter_next(radcli_avp_iter *);
int            radcli_avp_list_error(const radcli_avp_list *);
void           radcli_avp_list_free(radcli_avp_list *);
radcli_avp_iter radcli_avp_list_iter(const radcli_avp_list *);
radcli_avp_list*radcli_avp_list_new(void);
int            radcli_ctx_apply(radcli_ctx *);
int            radcli_ctx_dispatch(radcli_ctx *);
void           radcli_ctx_free(radcli_ctx *);
int            radcli_ctx_get_opt_int(const radcli_ctx *, radcli_opt_id, long *);
const char    *radcli_ctx_get_opt_str(const radcli_ctx *, radcli_opt_id);
int            radcli_ctx_get_poll(radcli_ctx *, struct pollfd *, size_t, size_t *, int *);
radcli_ctx    *radcli_ctx_new(unsigned);
radcli_ctx    *radcli_ctx_read_config(const char *, unsigned);
int            radcli_ctx_read_dictionary(radcli_ctx *, const char *);
int            radcli_ctx_read_dictionary_from_buffer(radcli_ctx *, const char *, size_t);
int            radcli_ctx_set_opt_int(radcli_ctx *, radcli_opt_id, long);
int            radcli_ctx_set_opt_str(radcli_ctx *, radcli_opt_id, const char *);
int            radcli_ctx_set_secret(radcli_ctx *, unsigned, const char *);
int            radcli_ctx_set_tls_psk(radcli_ctx *, const void *, size_t, const uint8_t *, size_t);
void           radcli_dae_free(radcli_dae *);
radcli_dae    *radcli_dae_new(radcli_ctx *, unsigned);
int            radcli_dae_process(radcli_dae *, const void *, size_t, const struct sockaddr *, socklen_t, radcli_dae_request **);
int            radcli_dae_reply(radcli_dae_request *, int);
int            radcli_dae_reply_error(radcli_dae_request *, uint32_t);
int            radcli_dae_reply_to_buffer(radcli_dae_request *, int, uint32_t, void *, size_t *);
const radcli_avp_list*radcli_dae_req_attrs(const radcli_dae_request *);
radcli_code    radcli_dae_req_code(const radcli_dae_request *);
int            radcli_dae_req_framed_ip(const radcli_dae_request *, struct sockaddr_storage *);
int            radcli_dae_req_nas_port(const radcli_dae_request *, uint32_t *);
const char    *radcli_dae_req_session_id(const radcli_dae_request *);
const char    *radcli_dae_req_user_name(const radcli_dae_request *);
void           radcli_dae_request_free(radcli_dae_request *);
void           radcli_dae_set_handler(radcli_dae *, radcli_dae_handler, void *);
int            radcli_dae_start(radcli_dae *);
const radcli_attr_def*radcli_dict_lookup(const radcli_ctx *, const char *);
const radcli_attr_def*radcli_dict_lookup_num(const radcli_ctx *, uint32_t, uint32_t);
const radcli_attr_def*radcli_dict_lookup_oid(const radcli_ctx *, const char *);
int            radcli_dict_lookup_value(const radcli_ctx *, const radcli_attr_def *, const char *, uint32_t *);
const radcli_avp_list*radcli_request_attrs(const radcli_request *);
radcli_code    radcli_request_code(const radcli_request *);
int            radcli_request_done(radcli_request *);
void           radcli_request_free(radcli_request *);
radcli_request*radcli_request_new(radcli_ctx *, radcli_code, const radcli_avp_list *);
int            radcli_request_perform(radcli_request *, unsigned);
const char    *radcli_request_server(const radcli_request *);
```

## SEE ALSO

[*radcli\_aaa*(3)](/radcli_aaa/3.md), [*radcli\_attr\_def\_name*(3)](/radcli_attr_def_name/3.md), [*radcli\_attr\_def\_oid*(3)](/radcli_attr_def_oid/3.md), [*radcli\_attr\_def\_type*(3)](/radcli_attr_def_type/3.md), [*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\_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), [*radcli\_ctx\_apply*(3)](/radcli_ctx_apply/3.md), [*radcli\_ctx\_dispatch*(3)](/radcli_ctx_dispatch/3.md), [*radcli\_ctx\_free*(3)](/radcli_ctx_free/3.md), [*radcli\_ctx\_get\_opt\_int*(3)](/radcli_ctx_get_opt_int/3.md), [*radcli\_ctx\_get\_opt\_str*(3)](/radcli_ctx_get_opt_str/3.md), [*radcli\_ctx\_get\_poll*(3)](/radcli_ctx_get_poll/3.md), [*radcli\_ctx\_new*(3)](/radcli_ctx_new/3.md), [*radcli\_ctx\_read\_config*(3)](/radcli_ctx_read_config/3.md), [*radcli\_ctx\_read\_dictionary*(3)](/radcli_ctx_read_dictionary/3.md), [*radcli\_ctx\_read\_dictionary\_from\_buffer*(3)](/radcli_ctx_read_dictionary_from_buffer/3.md), [*radcli\_ctx\_set\_opt\_int*(3)](/radcli_ctx_set_opt_int/3.md), [*radcli\_ctx\_set\_opt\_str*(3)](/radcli_ctx_set_opt_str/3.md), [*radcli\_ctx\_set\_secret*(3)](/radcli_ctx_set_secret/3.md), [*radcli\_ctx\_set\_tls\_psk*(3)](/radcli_ctx_set_tls_psk/3.md), [*radcli\_dae\_free*(3)](/radcli_dae_free/3.md), [*radcli\_dae\_new*(3)](/radcli_dae_new/3.md), [*radcli\_dae\_process*(3)](/radcli_dae_process/3.md), [*radcli\_dae\_reply*(3)](/radcli_dae_reply/3.md), [*radcli\_dae\_reply\_error*(3)](/radcli_dae_reply_error/3.md), [*radcli\_dae\_reply\_to\_buffer*(3)](/radcli_dae_reply_to_buffer/3.md), [*radcli\_dae\_req\_attrs*(3)](/radcli_dae_req_attrs/3.md), [*radcli\_dae\_req\_code*(3)](/radcli_dae_req_code/3.md), [*radcli\_dae\_req\_framed\_ip*(3)](/radcli_dae_req_framed_ip/3.md), [*radcli\_dae\_req\_nas\_port*(3)](/radcli_dae_req_nas_port/3.md), [*radcli\_dae\_req\_session\_id*(3)](/radcli_dae_req_session_id/3.md), [*radcli\_dae\_req\_user\_name*(3)](/radcli_dae_req_user_name/3.md), [*radcli\_dae\_request\_free*(3)](/radcli_dae_request_free/3.md), [*radcli\_dae\_set\_handler*(3)](/radcli_dae_set_handler/3.md), [*radcli\_dae\_start*(3)](/radcli_dae_start/3.md), [*radcli\_dict\_lookup*(3)](/radcli_dict_lookup/3.md), [*radcli\_dict\_lookup\_num*(3)](/radcli_dict_lookup_num/3.md), [*radcli\_dict\_lookup\_oid*(3)](/radcli_dict_lookup_oid/3.md), [*radcli\_dict\_lookup\_value*(3)](/radcli_dict_lookup_value/3.md), [*radcli\_request\_attrs*(3)](/radcli_request_attrs/3.md), [*radcli\_request\_code*(3)](/radcli_request_code/3.md), [*radcli\_request\_done*(3)](/radcli_request_done/3.md), [*radcli\_request\_free*(3)](/radcli_request_free/3.md), [*radcli\_request\_new*(3)](/radcli_request_new/3.md), [*radcli\_request\_perform*(3)](/radcli_request_perform/3.md), [*radcli\_request\_server*(3)](/radcli_request_server/3.md)
