Skip to content

Commit 9b57382

Browse files
committed
Hoist Module-Failue-Message from eap subrequest
So the parent request can log failure reasons
1 parent 299bf8c commit 9b57382

File tree

1 file changed

+15
-0
lines changed

1 file changed

+15
-0
lines changed

src/modules/rlm_eap/rlm_eap.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ static fr_dict_attr_t const *attr_auth_type;
9393
static fr_dict_attr_t const *attr_eap_type;
9494
static fr_dict_attr_t const *attr_eap_identity;
9595
static fr_dict_attr_t const *attr_stripped_user_domain;
96+
static fr_dict_attr_t const *attr_module_failure_message;
9697

9798
static fr_dict_attr_t const *attr_eap_message;
9899
static 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

Comments
 (0)