From: Arran Cudbard-Bell Date: Sat, 19 May 2018 14:04:46 +0000 (+0600) Subject: Autoload proto_radius_status attributes X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9853f936cfcdad720d4852390807fec4e6f7545f;p=thirdparty%2Ffreeradius-server.git Autoload proto_radius_status attributes --- diff --git a/src/modules/proto_radius/proto_radius_status.c b/src/modules/proto_radius/proto_radius_status.c index 6423ab33a7a..6b3d8d2e223 100644 --- a/src/modules/proto_radius/proto_radius_status.c +++ b/src/modules/proto_radius/proto_radius_status.c @@ -29,12 +29,27 @@ #include #include +static fr_dict_t const *dict_freeradius; + +extern fr_dict_autoload_t proto_radius_status_dict[]; +fr_dict_autoload_t proto_radius_status_dict[] = { + { .out = &dict_freeradius, .proto = "freeradius" }, + { NULL } +}; + +static fr_dict_attr_t const *attr_packet_type; + +extern fr_dict_attr_autoload_t proto_radius_status_dict_attr[]; +fr_dict_attr_autoload_t proto_radius_status_dict_attr[] = { + { .out = &attr_packet_type, .name = "Packet-Type", .type = FR_TYPE_UINT32, .dict = &dict_freeradius }, + { NULL } +}; + static fr_io_final_t mod_process(REQUEST *request, fr_io_action_t action) { rlm_rcode_t rcode; CONF_SECTION *unlang; fr_dict_enum_t const *dv; - fr_dict_attr_t const *da = NULL; VALUE_PAIR *vp; REQUEST_VERIFY(request); @@ -97,13 +112,10 @@ static fr_io_final_t mod_process(REQUEST *request, 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); + vp = fr_pair_find_by_da(request->reply->vps, attr_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); - - dv = fr_dict_enum_by_value(da, fr_box_uint32(request->reply->code)); + dv = fr_dict_enum_by_value(attr_packet_type, fr_box_uint32(request->reply->code)); unlang = NULL; if (dv) unlang = cf_section_find(request->server_cs, "send", dv->alias); @@ -139,15 +151,12 @@ static fr_io_final_t mod_process(REQUEST *request, fr_io_action_t action) * the NAK section. */ if (request->reply->code != FR_CODE_ACCESS_REJECT) { - if (!da) da = fr_dict_attr_by_num(NULL, 0, FR_PACKET_TYPE); - rad_assert(da != NULL); - - dv = fr_dict_enum_by_value(da, fr_box_uint32(request->reply->code)); - RWDEBUG("Failed running 'send %s', trying 'send Access-Reject'.", dv->alias); + dv = fr_dict_enum_by_value(attr_packet_type, fr_box_uint32(request->reply->code)); + RWDEBUG("Failed running 'send %s', trying 'send Access-Reject'", dv->alias); request->reply->code = FR_CODE_ACCESS_REJECT; - dv = fr_dict_enum_by_value(da, fr_box_uint32(request->reply->code)); + dv = fr_dict_enum_by_value(attr_packet_type, fr_box_uint32(request->reply->code)); unlang = NULL; if (!dv) goto send_reply;