.\" File automatically generated by doxy2man0.3 .\" Generation date: Thu Sep 3 2026 .TH radcli_avp_add_username 3 2026-09-03 "radcli" "Radius client library" .SH "NAME" radcli_avp_add_username \- Append a User-Name AVP, appending a realm as "username@realm" unless username already contains one. .SH SYNOPSIS .nf .B #include .sp \fBint radcli_avp_add_username\fP( \fBradcli_avp_list *\fP\fIlist\fP, \fBconst radcli_ctx *\fP\fIctx\fP, \fBconst char *\fP\fIusername\fP, \fBconst char *\fP\fIrealm\fP ); .fi .SH DESCRIPTION .PP Written for callers (e.g. an application reading its own "default_realm" config knob) that need to send "username@realm" only when the caller- supplied username didn't already come with a realm attached. Passing realm as NULL reaches for ctx's own "default_realm" configuration option, so an application whose realm policy is just "whatever this .PP ctx's config file says" never needs to read that option out itself. .SH PARAMETERS .TP .B list destination list. .TP .B ctx a context with a dictionary defining User-Name (any radcli_ctx_new()/radcli_ctx_read_config() context qualifies). .TP .B username the username; used as-is if it already contains '@'. .TP .B realm realm to append if username has no '@': NULL uses ctx's own "default_realm" configuration option (no realm appended if that option is unset or empty); "" explicitly suppresses appending a realm even if "default_realm" is configured; any other string is used verbatim. .SH RETURN VALUE .PP 0 on success, -1 on failure (no User-Name attribute in ctx's dictionary, allocation failure, or as radcli_avp_add_str()). .SH SEE ALSO .PP .nh .ad l \fIradcli_avp_add_bytes\fP(3), \fIradcli_avp_add_bytes_by_num\fP(3), \fIradcli_avp_add_gigawords64\fP(3), \fIradcli_avp_add_gigawords64_by_num\fP(3), \fIradcli_avp_add_ip4\fP(3), \fIradcli_avp_add_ip4_by_num\fP(3), \fIradcli_avp_add_ip4prefix\fP(3), \fIradcli_avp_add_ip4prefix_by_num\fP(3), \fIradcli_avp_add_ip6\fP(3), \fIradcli_avp_add_ip6_by_num\fP(3), \fIradcli_avp_add_str\fP(3), \fIradcli_avp_add_str_by_num\fP(3), \fIradcli_avp_add_uint32\fP(3), \fIradcli_avp_add_uint32_by_num\fP(3), \fIradcli_avp_add_uint64\fP(3), \fIradcli_avp_add_uint64_by_num\fP(3), \fIradcli_avp_concat_str\fP(3), \fIradcli_avp_concat_str_by_num\fP(3), \fIradcli_avp_def\fP(3), \fIradcli_avp_get\fP(3), \fIradcli_avp_get_by_num\fP(3), \fIradcli_avp_get_bytes\fP(3), \fIradcli_avp_get_bytes_by_num\fP(3), \fIradcli_avp_get_cstr\fP(3), \fIradcli_avp_get_cstr_by_num\fP(3), \fIradcli_avp_get_gigawords64\fP(3), \fIradcli_avp_get_gigawords64_by_num\fP(3), \fIradcli_avp_get_ip4prefix\fP(3), \fIradcli_avp_get_ip4prefix_by_num\fP(3), \fIradcli_avp_get_ip6\fP(3), \fIradcli_avp_get_ip6_by_num\fP(3), \fIradcli_avp_get_uint32\fP(3), \fIradcli_avp_get_uint32_by_num\fP(3), \fIradcli_avp_get_uint64\fP(3), \fIradcli_avp_get_uint64_by_num\fP(3), \fIradcli_avp_iter_next\fP(3), \fIradcli_avp_list_error\fP(3), \fIradcli_avp_list_free\fP(3), \fIradcli_avp_list_iter\fP(3), \fIradcli_avp_list_new\fP(3) .ad .hy