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

# rc\_aaa(3)

Builds an authentication/accounting request for port id nas\_port with the value\_pairs send and submits it to a server.

## NAME

rc\_aaa - Builds an authentication/accounting request for port id nas\_port with the value\_pairs send and submits it to a server.

## SYNOPSIS

```
#include <radcli/>

int rc_aaa(
    rc_handle        *rh,
    uint32_t          nas_port,
    VALUE_PAIR       *send,
    VALUE_PAIR      **received,
    char             *msg,
    int               add_nas_port,
    rc_standard_codes request_type
);
```

## DESCRIPTION

## PARAMETERS

- **rh**

  a handle to parsed configuration.

- **nas\_port**

  the physical NAS port number to use (may be zero).

- **send**

  a VALUE\_PAIR array of values (e.g., PW\_USER\_NAME).

- **received**

  an allocated array of received values.

- **msg**

  must be an array of PW\_MAX\_MSG\_SIZE or NULL; will contain the concatenation of any PW\_REPLY\_MESSAGE received.

- **add\_nas\_port**

  this should be zero; if non-zero it will include PW\_NAS\_PORT in sent pairs.

- **request\_type**

  one of standard RADIUS codes (e.g., PW\_ACCESS\_REQUEST).

## RETURN VALUE

received value\_pairs in received, messages from the server in msg and OK\_RC (0) on success, CHALLENGE\_RC (3) on Access-Challenge received, negative on failure as return value.

## SEE ALSO

[*rc\_aaa\_ctx*(3)](/rc_aaa_ctx/3.md), [*rc\_aaa\_ctx\_free*(3)](/rc_aaa_ctx_free/3.md), [*rc\_aaa\_ctx\_get\_secret*(3)](/rc_aaa_ctx_get_secret/3.md), [*rc\_aaa\_ctx\_get\_vector*(3)](/rc_aaa_ctx_get_vector/3.md), [*rc\_aaa\_ctx\_server*(3)](/rc_aaa_ctx_server/3.md), [*rc\_acct*(3)](/rc_acct/3.md), [*rc\_acct\_async*(3)](/rc_acct_async/3.md), [*rc\_acct\_proxy*(3)](/rc_acct_proxy/3.md), [*rc\_auth*(3)](/rc_auth/3.md), [*rc\_auth\_proxy*(3)](/rc_auth_proxy/3.md), [*rc\_avpair\_add*(3)](/rc_avpair_add/3.md), [*rc\_avpair\_assign*(3)](/rc_avpair_assign/3.md), [*rc\_avpair\_copy*(3)](/rc_avpair_copy/3.md), [*rc\_avpair\_free*(3)](/rc_avpair_free/3.md), [*rc\_avpair\_gen*(3)](/rc_avpair_gen/3.md), [*rc\_avpair\_get*(3)](/rc_avpair_get/3.md), [*rc\_avpair\_get\_attr*(3)](/rc_avpair_get_attr/3.md), [*rc\_avpair\_get\_in6*(3)](/rc_avpair_get_in6/3.md), [*rc\_avpair\_get\_raw*(3)](/rc_avpair_get_raw/3.md), [*rc\_avpair\_get\_uint32*(3)](/rc_avpair_get_uint32/3.md), [*rc\_avpair\_insert*(3)](/rc_avpair_insert/3.md), [*rc\_avpair\_log*(3)](/rc_avpair_log/3.md), [*rc\_avpair\_new*(3)](/rc_avpair_new/3.md), [*rc\_avpair\_next*(3)](/rc_avpair_next/3.md), [*rc\_avpair\_parse*(3)](/rc_avpair_parse/3.md), [*rc\_avpair\_remove*(3)](/rc_avpair_remove/3.md), [*rc\_avpair\_tostr*(3)](/rc_avpair_tostr/3.md), [*rc\_buildreq*(3)](/rc_buildreq/3.md), [*rc\_check*(3)](/rc_check/3.md), [*rc\_dict\_addattr*(3)](/rc_dict_addattr/3.md), [*rc\_dict\_addval*(3)](/rc_dict_addval/3.md), [*rc\_dict\_addvend*(3)](/rc_dict_addvend/3.md), [*rc\_dict\_findattr*(3)](/rc_dict_findattr/3.md), [*rc\_dict\_findval*(3)](/rc_dict_findval/3.md), [*rc\_dict\_findvend*(3)](/rc_dict_findvend/3.md), [*rc\_dict\_getattr*(3)](/rc_dict_getattr/3.md), [*rc\_dict\_getval*(3)](/rc_dict_getval/3.md), [*rc\_dict\_getvend*(3)](/rc_dict_getvend/3.md), [*rc\_send\_server*(3)](/rc_send_server/3.md)
