@@ -93,6 +93,7 @@ static fr_dict_attr_t const *attr_auth_type;
9393static fr_dict_attr_t const * attr_eap_type ;
9494static fr_dict_attr_t const * attr_eap_identity ;
9595static fr_dict_attr_t const * attr_stripped_user_domain ;
96+ static fr_dict_attr_t const * attr_module_failure_message ;
9697
9798static fr_dict_attr_t const * attr_eap_message ;
9899static fr_dict_attr_t const * attr_message_authenticator ;
@@ -106,6 +107,7 @@ fr_dict_attr_autoload_t rlm_eap_dict_attr[] = {
106107 { .out = & attr_eap_type , .name = "EAP-Type" , .type = FR_TYPE_UINT32 , .dict = & dict_freeradius },
107108 { .out = & attr_eap_identity , .name = "EAP-Identity" , .type = FR_TYPE_STRING , .dict = & dict_freeradius },
108109 { .out = & attr_stripped_user_domain , .name = "Stripped-User-Domain" , .type = FR_TYPE_STRING , .dict = & dict_freeradius },
110+ { .out = & attr_module_failure_message , .name = "Module-Failure-Message" , .type = FR_TYPE_STRING , .dict = & dict_freeradius },
109111
110112 { .out = & attr_eap_message , .name = "EAP-Message" , .type = FR_TYPE_OCTETS , .dict = & dict_radius },
111113 { .out = & attr_message_authenticator , .name = "Message-Authenticator" , .type = FR_TYPE_OCTETS , .dict = & dict_radius },
@@ -420,6 +422,19 @@ static unlang_action_t mod_authenticate_result(rlm_rcode_t *p_result, UNUSED mod
420422 request_t * request , eap_session_t * eap_session , rlm_rcode_t result )
421423{
422424 rlm_rcode_t rcode ;
425+ fr_pair_t * next , * vp ;
426+
427+ /*
428+ * Hoist any instances of Module-Failure-Message from the subrequest
429+ * so they can be used for logging failures.
430+ */
431+ vp = fr_pair_find_by_da (& eap_session -> subrequest -> request_pairs , NULL , attr_module_failure_message );
432+ while (vp ) {
433+ next = fr_pair_find_by_da (& eap_session -> subrequest -> request_pairs , vp , attr_module_failure_message );
434+ fr_pair_remove (& eap_session -> subrequest -> request_pairs , vp );
435+ fr_pair_steal_append (request -> request_ctx , & request -> request_pairs , vp );
436+ vp = next ;
437+ }
423438
424439 /*
425440 * Cleanup the subrequest
0 commit comments