From: Alan T. DeKok Date: Thu, 29 Jun 2017 13:13:28 +0000 (-0400) Subject: allow for setting reply:Packet-Type X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=774342be11f7d8d2da4943f6fc1f41663b92e595;p=thirdparty%2Ffreeradius-server.git allow for setting reply:Packet-Type --- diff --git a/src/modules/proto_radius/proto_radius_auth.c b/src/modules/proto_radius/proto_radius_auth.c index b02c7684fe4..eccecc593b3 100644 --- a/src/modules/proto_radius/proto_radius_auth.c +++ b/src/modules/proto_radius/proto_radius_auth.c @@ -230,6 +230,16 @@ static fr_io_final_t mod_process(REQUEST *request, UNUSED fr_io_action_t action) goto setup_send; } + /* + * Allow for over-ride of reply code. + */ + vp = fr_pair_find_by_num(request->reply->vps, 0, FR_PACKET_TYPE, TAG_ANY); + if (vp) { + request->reply->code = vp->vp_uint32; + goto setup_send; + } + + REDEBUG2("No Auth-Type available: rejecting the user."); request->reply->code = FR_CODE_ACCESS_REJECT; goto setup_send; @@ -348,13 +358,7 @@ static fr_io_final_t mod_process(REQUEST *request, UNUSED fr_io_action_t action) * Allow for over-ride of reply code. */ vp = fr_pair_find_by_num(request->reply->vps, 0, FR_PACKET_TYPE, TAG_ANY); - if (vp) { - if (vp->vp_uint32 == 256) { - request->reply->code = 0; - } else { - request->reply->code = vp->vp_uint32; - } - } + if (vp) request->reply->code = vp->vp_uint32; if (request->reply->code == FR_CODE_ACCESS_ACCEPT) { if ((vp = fr_pair_find_by_num(request->packet->vps, 0, FR_MODULE_SUCCESS_MESSAGE, TAG_ANY)) != NULL){ diff --git a/src/modules/proto_radius/proto_radius_status.c b/src/modules/proto_radius/proto_radius_status.c index e643ac9568d..0db4436f46c 100644 --- a/src/modules/proto_radius/proto_radius_status.c +++ b/src/modules/proto_radius/proto_radius_status.c @@ -34,6 +34,7 @@ static fr_io_final_t mod_process(REQUEST *request, UNUSED fr_io_action_t action) CONF_SECTION *unlang; fr_dict_enum_t const *dv; fr_dict_attr_t const *da = NULL; + VALUE_PAIR *vp; VERIFY_REQUEST(request); @@ -84,6 +85,12 @@ static fr_io_final_t mod_process(REQUEST *request, UNUSED fr_io_action_t action) break; } + /* + * Allow for over-ride of reply code. + */ + vp = fr_pair_find_by_num(request->reply->vps, 0, FR_PACKET_TYPE, TAG_ANY); + if (vp) request->reply->code = vp->vp_uint32; + if (!da) da = fr_dict_attr_by_num(NULL, 0, FR_PACKET_TYPE); rad_assert(da != NULL);