#include <freeradius-devel/dict.h>
#include <freeradius-devel/rad_assert.h>
+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);
/*
* 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);
* 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;