]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
create a fake client
authorAlan T. DeKok <aland@freeradius.org>
Fri, 10 Nov 2017 19:29:52 +0000 (14:29 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Fri, 10 Nov 2017 19:29:52 +0000 (14:29 -0500)
src/modules/proto_detail/proto_detail.h
src/modules/proto_detail/proto_detail_work.c

index 5c1b93e0afbb911f562735178503e16b451ecce7..dde2aec2cc96e759915383072c0c08454687e378 100644 (file)
@@ -115,6 +115,7 @@ typedef struct proto_detail_work_t {
        off_t                           read_offset;            //!< where we're reading from in filename_work
 
        fr_event_timer_t const          *ev;                    //!< for detail file timers.
+       RADCLIENT                       *client;                //!< so the rest of the server doesn't complain
 } proto_detail_work_t;
 
 typedef struct proto_detail_process_t {
index 008c495f2525a853c0b85f3d04b305bdcfc9ded0..73c67eac1df8ca3ec1ef9f27486d23240326cba5 100644 (file)
@@ -90,11 +90,13 @@ static const CONF_PARSER file_listen_config[] = {
 static int mod_decode(UNUSED void const *instance, REQUEST *request, UNUSED uint8_t *const data, UNUSED size_t data_len)
 {
 
-//     proto_detail_work_t const       *inst = talloc_get_type_abort_const(instance, proto_detail_work_t);
+       proto_detail_work_t const       *inst = talloc_get_type_abort_const(instance, proto_detail_work_t);
        fr_detail_entry_t const         *track = request->async->packet_ctx;
        VALUE_PAIR *vp;
 
        request->root = &main_config;
+       request->client = inst->client;
+
        request->packet->id = track->id;
        request->reply->id = track->id;
        REQUEST_VERIFY(request);
@@ -723,9 +725,20 @@ static void mod_event_list_set(void *instance, fr_event_list_t *el)
 static int mod_instantiate(void *instance, UNUSED CONF_SECTION *cs)
 {
        proto_detail_work_t *inst = talloc_get_type_abort(instance, proto_detail_work_t);
+       RADCLIENT *client;
 
        FR_DLIST_INIT(inst->list);
 
+       client = inst->client = talloc_zero(inst, RADCLIENT);
+       if (!inst->client) return 0;
+
+       client->ipaddr.af = AF_INET;
+       client->ipaddr.addr.v4.s_addr = htonl(INADDR_NONE);
+       client->src_ipaddr = client->ipaddr;
+
+       client->longname = client->shortname = client->secret = inst->filename_work;
+       client->nas_type = talloc_strdup(client, "other");
+
        return 0;
 }