.\" File automatically generated by doxy2man0.3 .\" Generation date: Wed Aug 19 2026 .TH rc_acct_async 3 2026-08-19 "radcli" "Radius client library" .SH "NAME" rc_acct_async \- Sends an accounting request to every configured accounting server without waiting for a reply. .SH SYNOPSIS .nf .B #include .sp \fBint rc_acct_async\fP( \fBrc_handle *\fP\fIrh\fP, \fBuint32_t \fP\fInas_port\fP, \fBVALUE_PAIR *\fP\fIsend\fP ); .fi .SH DESCRIPTION .PP Selects the server list the same way rc_acct() does (acctserver, or authserver under TLS/DTLS). Unlike rc_acct()/rc_aaa(), which stop at the first server that replies and fail over to the next only after a timeout, this sends to every configured server unconditionally, since there is no reply to judge success or failure by. Intended for best-effort notifications such as an Accounting-Stop sent while an application is shutting down and cannot afford to block. .SH PARAMETERS .TP .B rh a handle to parsed configuration. .TP .B nas_port the physical NAS port number to include (may be zero). .TP .B send VALUE_PAIR list of attributes to send; NAS-Port and Acct-Delay-Time are filled in as with rc_acct(). .SH STRUCTURES .SS "" .PP .sp .PP Avoid using this structure directly. Use rc_avpair_get_uint32() for integer/IPv4/date values, rc_avpair_get_in6() for IPv6 addresses and prefixes, rc_avpair_get_raw() for string/binary values, and rc_avpair_get_attr() to read the attribute type and ID. To iterate the list use rc_avpair_next(). Free the entire list with rc_avpair_free(). .sp .RS .nf \fB struct rc_value_pair { char \fIname\fP[RC_NAME_LENGTH+1]; // attribute name if known. uint64_t \fIattribute\fP; // attribute numeric value of type rc_attr_id including vendor; use VENDOR() and ATTRID() to separate. rc_attr_type \fItype\fP; // attribute type. uint32_t \fIlvalue\fP; // attribute value if type is PW_TYPE_INTEGER, PW_TYPE_DATE or PW_TYPE_IPADDR. char \fIstrvalue\fP[AUTH_STRING_LEN+1]; // contains attribute value in other cases. struct rc_value_pair *\fInext\fP; char \fIpad\fP[32]; // unused pad }; \fP .fi .RE .SH RETURN VALUE .PP OK_RC (0) if the packet was handed to the socket layer for at least one server, ERROR_RC if no accounting servers are configured or the send failed for all of them. .SH SEE ALSO .PP .nh .ad l \fIrc_aaa\fP(3), \fIrc_aaa_ctx\fP(3), \fIrc_aaa_ctx_free\fP(3), \fIrc_aaa_ctx_get_secret\fP(3), \fIrc_aaa_ctx_get_vector\fP(3), \fIrc_aaa_ctx_server\fP(3), \fIrc_acct\fP(3), \fIrc_acct_proxy\fP(3), \fIrc_add_config\fP(3), \fIrc_apply_config\fP(3), \fIrc_auth\fP(3), \fIrc_auth_proxy\fP(3), \fIrc_avpair_add\fP(3), \fIrc_avpair_assign\fP(3), \fIrc_avpair_copy\fP(3), \fIrc_avpair_free\fP(3), \fIrc_avpair_gen\fP(3), \fIrc_avpair_get\fP(3), \fIrc_avpair_get_attr\fP(3), \fIrc_avpair_get_in6\fP(3), \fIrc_avpair_get_raw\fP(3), \fIrc_avpair_get_uint32\fP(3), \fIrc_avpair_insert\fP(3), \fIrc_avpair_log\fP(3), \fIrc_avpair_new\fP(3), \fIrc_avpair_next\fP(3), \fIrc_avpair_parse\fP(3), \fIrc_avpair_remove\fP(3), \fIrc_avpair_tostr\fP(3), \fIrc_buildreq\fP(3), \fIrc_check\fP(3), \fIrc_conf_int\fP(3), \fIrc_conf_srv\fP(3), \fIrc_conf_str\fP(3), \fIrc_config_free\fP(3), \fIrc_config_init\fP(3), \fIrc_destroy\fP(3), \fIrc_dict_addattr\fP(3), \fIrc_dict_addval\fP(3), \fIrc_dict_addvend\fP(3), \fIrc_dict_findattr\fP(3), \fIrc_dict_findval\fP(3), \fIrc_dict_findvend\fP(3), \fIrc_dict_free\fP(3), \fIrc_dict_getattr\fP(3), \fIrc_dict_getval\fP(3), \fIrc_dict_getvend\fP(3), \fIrc_find_server_addr\fP(3), \fIrc_get_socket_type\fP(3), \fIrc_new\fP(3), \fIrc_read_config\fP(3), \fIrc_read_dictionary\fP(3), \fIrc_read_dictionary_from_buffer\fP(3), \fIrc_send_server\fP(3), \fIrc_test_config\fP(3) .ad .hy