radcli_dae_process(3)
πΈ NAME πΈ
radcli_dae_process(3) β bestie, this is the Radius client library page for validating a caller-supplied packet without a radcli-owned socket. It's the L0 counterpart of radcli_ctx_dispatch(), and it runs the identical validation pipeline (REQ-DAE-NET-003) on a buffer and source address the caller supplies instead of reading them from radcli_dae_start()'s socket. A request this produces is otherwise indistinguishable from one radcli_ctx_dispatch() would have delivered to a handler. Periodt. π
β¨ SYNOPSIS β¨
#include <radcli/>
int radcli_dae_process(
radcli_dae *dae,
const void *buf,
size_t len,
const struct sockaddr *from,
socklen_t fromlen,
radcli_dae_request **req
);
π DESCRIPTION π
okay so the whole function is basically: you bring the packet and the source address, it brings the identical validation pipeline. The parameter tea is right below β including the RadSec rejection and the fromlen sanity rules, so don't skip it. π«Ά
π PARAMETERS π
daeβ a listener fromradcli_dae_new()(radcli_dae_start()need never have been called: this function reads no socket). Rejected outright (-1) ifdaeis followingserv-type=tls/dtls(RadSec): that transport trusts the record's origin entirely to the already-verified TLS/DTLS session (REQ-DAE-SEC-015), which this buffer/address pair is not, and has no source-address check of its own to apply to it.bufβ the received packet, header included.lenβbuf's length.fromβ the packet's source address, for the dae-server authorization check.fromlenβfrom's length. Must be at leastsizeof(struct sockaddr_in)and at mostsizeof(struct sockaddr_storage), and consistent with the familyfrom->sa_familydeclares (AF_INETorAF_INET6only, matching what dae-server can authorize). An application relayingfromandfromlenfrom an untrusted producer (e.g. over IPC from a privileged listener) must not assume this function corrects a mismatch; it only rejects one.reqβ set to the validated request on success (RADCLI_DAE_NEWorRADCLI_DAE_DUPLICATE), leftNULLon failure.
π RETURN VALUE π
RADCLI_DAE_NEW or RADCLI_DAE_DUPLICATE on success. And -1 if the packet failed validation (discarded silently, exactly as radcli_ctx_dispatch() would), if dae is a RadSec listener, or if any argument is invalid. No cap. π
π¦ SEE ALSO π¦
radcli_ctx_dispatch(3)radcli_ctx_get_poll(3)radcli_dae_free(3)radcli_dae_new(3)radcli_dae_reply(3)radcli_dae_reply_error(3)radcli_dae_reply_to_buffer(3)radcli_dae_req_attrs(3)radcli_dae_req_code(3)radcli_dae_req_framed_ip(3)radcli_dae_req_nas_port(3)radcli_dae_req_session_id(3)radcli_dae_req_user_name(3)radcli_dae_request_free(3)radcli_dae_set_handler(3)radcli_dae_start(3)
signed, sealed, and slaying by radcli β dated 2026-10-10, and this is the radcli_dae_process(3) page πβ¨
π¦ where this page comes from
- arch rolling: radcli 2.0.1-1 Β· BSD
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms