---
name: "radcli_dae_reply_to_buffer"
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_dae_reply_to_buffer"
---

# radcli\_dae\_reply\_to\_buffer(3)

Produce a reply as bytes instead of sending it the L0 counterpart of radcli\_dae\_reply()/radcli\_dae\_reply\_error(), for a request that came from radcli\_dae\_process().

## NAME

radcli\_dae\_reply\_to\_buffer - Produce a reply as bytes instead of sending it  the L0 counterpart of radcli\_dae\_reply()/radcli\_dae\_reply\_error(), for a request that came from radcli\_dae\_process().

## SYNOPSIS

```
#include <radcli/>

int radcli_dae_reply_to_buffer(
    radcli_dae_request  *req,
    int                  ack,
    uint32_t             error_cause,
    void                *buf,
    size_t              *len
);
```

## DESCRIPTION

For a request radcli\_dae\_process() returned RADCLI\_DAE\_DUPLICATE for, ack and error\_cause are ignored: a genuine retransmission always gets the same answer it originally got (RFC 5176 SS2.3), never a fresh one, so the bytes produced are always that cached decision's.

## PARAMETERS

- **req**

  a request from radcli\_dae\_process(), not yet replied to (unless RADCLI\_DAE\_DUPLICATE, which may be called any number of times).

- **ack**

  non-zero for an ACK, zero for a NAK  ignored if req is a RADCLI\_DAE\_DUPLICATE.

- **error\_cause**

  a radcli\_error\_cause value for a NAK, or 0 for a bare one  ignored if req is a RADCLI\_DAE\_DUPLICATE.

- **buf**

  filled with the reply's bytes on success.

- **len**

  buf's capacity on entry; the reply's actual length on success.

## RETURN VALUE

0 on success, -1 on failure (any argument NULL, req already replied to and not a RADCLI\_DAE\_DUPLICATE, or buf too small).

## SEE ALSO

[*radcli\_ctx\_dispatch*(3)](/radcli_ctx_dispatch/3.md), [*radcli\_ctx\_get\_poll*(3)](/radcli_ctx_get_poll/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\_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)
