.\" File automatically generated by doxy2man0.3 .\" Generation date: Wed Aug 19 2026 .TH rc_avpair_insert 3 2026-08-19 "radcli" "Radius client library" .SH "NAME" rc_avpair_insert \- Insert a VALUE_PAIR into a list. .SH SYNOPSIS .nf .B #include .sp \fBvoid rc_avpair_insert\fP( \fBVALUE_PAIR **\fP\fIa\fP, \fBVALUE_PAIR *\fP\fIp\fP, \fBVALUE_PAIR *\fP\fIb\fP ); .fi .SH DESCRIPTION .PP Given the address of an existing list "a" and a pointer to an entry "p" in that list, add the value pair "b" to the "a" list after the "p" entry. If "p" is NULL, add the value pair "b" to the end of "a". .SH PARAMETERS .TP .B a a VALUE_PAIR array of values. .TP .B p a pointer to a VALUE_PAIR in a. .TP .B b The VALUE_PAIR pointer to add in a. .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 .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 .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 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_async\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_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