*/
typedef int (*fr_app_open_t)(void *instance, fr_schedule_t *sc, CONF_SECTION *cs);
-/** Set the next state executed by the request to be one of the application subtype's entry points
- *
- * @param[in] instance of the #fr_app_t.
- * @param[in] request To set the next state function for.
- */
-typedef void (*fr_app_entry_point_set_t)(void const *instance, request_t *request);
-
/** Set the priority of a packet
*
* @param[in] instance of the #fr_app_t.
///< Here for convenience, so that encode operations common
///< to all #fr_app_io_t can be performed by the #fr_app_t.
- fr_app_entry_point_set_t entry_point_set;//!< Callback to Set the entry point into the state machine
- ///< provided by the fr_app_worker_t.
- ///< We need a function this as the #fr_app_worker_t might
- ///< change based on the packet we received.
-
fr_app_priority_get_t priority; //!< Assign a priority to the packet.
} fr_app_t;
}
/*
- * Call the main protocol handler to set the right async
- * process function.
+ * Set the entry point for this virtual server.
*/
- listen->app->entry_point_set(listen->app_instance, request);
-
+ virtual_server_entry_point_set(request);
if (!request->async->process) {
RERROR("Protocol failed to set 'process' function");
worker_nak(worker, cd, now);
request->async->listen = NULL;
request->async->packet_ctx = NULL;
- listener[0]->app->entry_point_set(listener[0]->proto_module->data, request);
+
+ virtual_server_entry_point_set(request);
}
static int fr_app_process_bootstrap(CONF_SECTION *server)
return slen;
}
-static void mod_entry_point_set(UNUSED void const *instance, request_t *request)
-{
- fr_assert(request->server_cs != NULL);
-
- virtual_server_entry_point_set(request);
-}
-
-
/** Open listen sockets/connect to external event source
*
* @param[in] instance Ctx data for this application.
.open = mod_open,
.decode = mod_decode,
.encode = mod_encode,
- .entry_point_set = mod_entry_point_set,
};
return 1;
}
-static void mod_entry_point_set(UNUSED void const *instance, request_t *request)
-{
- fr_assert(request->server_cs != NULL);
-
- virtual_server_entry_point_set(request);
-}
-
/** Open listen sockets/connect to external event source
*
* @param[in] instance Ctx data for this application.
.open = mod_open,
.decode = mod_decode,
.encode = mod_encode,
- .entry_point_set = mod_entry_point_set
};
return data_len;
}
-static void mod_entry_point_set(UNUSED void const *instance, request_t *request)
-{
- fr_assert(request->server_cs != NULL);
-
- virtual_server_entry_point_set(request);
-}
-
-
static int mod_priority_set(void const *instance, uint8_t const *buffer, size_t buflen)
{
proto_dhcpv4_t const *inst = talloc_get_type_abort_const(instance, proto_dhcpv4_t);
.open = mod_open,
.decode = mod_decode,
.encode = mod_encode,
- .entry_point_set = mod_entry_point_set,
.priority = mod_priority_set
};
return data_len;
}
-static void mod_entry_point_set(UNUSED void const *instance, request_t *request)
-{
- fr_assert(request->server_cs != NULL);
-
- virtual_server_entry_point_set(request);
-}
-
static int mod_priority_set(void const *instance, uint8_t const *buffer, UNUSED size_t buflen)
{
proto_dhcpv6_t const *inst = talloc_get_type_abort_const(instance, proto_dhcpv6_t);
.open = mod_open,
.decode = mod_decode,
.encode = mod_encode,
- .entry_point_set = mod_entry_point_set,
.priority = mod_priority_set
};
return data_len;
}
-static void mod_entry_point_set(UNUSED void const *instance, request_t *request)
-{
- fr_assert(request->server_cs != NULL);
-
- virtual_server_entry_point_set(request);
-}
-
-
static int mod_priority_set(void const *instance, uint8_t const *buffer, UNUSED size_t buflen)
{
proto_radius_t const *inst = talloc_get_type_abort_const(instance, proto_radius_t);
.open = mod_open,
.decode = mod_decode,
.encode = mod_encode,
- .entry_point_set = mod_entry_point_set,
.priority = mod_priority_set
};
return data_len;
}
-static void mod_entry_point_set(UNUSED void const *instance, request_t *request)
-{
- fr_assert(request->server_cs != NULL);
-
- virtual_server_entry_point_set(request);
-}
-
static int mod_priority_set(void const *instance, uint8_t const *buffer, UNUSED size_t buflen)
{
proto_tacacs_t const *inst = talloc_get_type_abort_const(instance, proto_tacacs_t);
.open = mod_open,
.decode = mod_decode,
.encode = mod_encode,
- .entry_point_set = mod_entry_point_set,
.priority = mod_priority_set
};
return data_len;
}
-static void mod_entry_point_set(UNUSED void const *instance, request_t *request)
-{
- fr_assert(request->server_cs != NULL);
-
- virtual_server_entry_point_set(request);
-}
-
static int mod_priority_set(void const *instance, uint8_t const *buffer, UNUSED size_t buflen)
{
proto_vmps_t const *inst = talloc_get_type_abort_const(instance, proto_vmps_t);
.open = mod_open,
.decode = mod_decode,
.encode = mod_encode,
- .entry_point_set = mod_entry_point_set,
.priority = mod_priority_set
};