From: Alan T. DeKok Date: Fri, 19 Mar 2021 13:33:54 +0000 (-0400) Subject: remove entry_point_set() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b8ed7ece7ffae6b83b99196a3b657feafcc6818b;p=thirdparty%2Ffreeradius-server.git remove entry_point_set() and instead just call the virtual server function --- diff --git a/src/lib/io/application.h b/src/lib/io/application.h index 32b05a8d0e0..6cffaf49841 100644 --- a/src/lib/io/application.h +++ b/src/lib/io/application.h @@ -69,13 +69,6 @@ typedef int (*fr_app_instantiate_t)(void *instance, CONF_SECTION *cs); */ 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. @@ -125,11 +118,6 @@ typedef struct { ///< 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; diff --git a/src/lib/io/worker.c b/src/lib/io/worker.c index 0e4238dd7cc..281012cf5e8 100644 --- a/src/lib/io/worker.c +++ b/src/lib/io/worker.c @@ -757,11 +757,9 @@ nak: } /* - * 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); diff --git a/src/lib/server/virtual_servers.c b/src/lib/server/virtual_servers.c index 638aef8eb68..39420eff113 100644 --- a/src/lib/server/virtual_servers.c +++ b/src/lib/server/virtual_servers.c @@ -1495,7 +1495,8 @@ void fr_request_async_bootstrap(request_t *request, fr_event_list_t *el) 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) diff --git a/src/listen/arp/proto_arp.c b/src/listen/arp/proto_arp.c index 42aa78123f7..3f2f8b5f306 100644 --- a/src/listen/arp/proto_arp.c +++ b/src/listen/arp/proto_arp.c @@ -143,14 +143,6 @@ static ssize_t mod_encode(void const *instance, request_t *request, uint8_t *buf 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. @@ -323,5 +315,4 @@ fr_app_t proto_arp = { .open = mod_open, .decode = mod_decode, .encode = mod_encode, - .entry_point_set = mod_entry_point_set, }; diff --git a/src/listen/detail/proto_detail.c b/src/listen/detail/proto_detail.c index 50a548ddc21..bceace3d30e 100644 --- a/src/listen/detail/proto_detail.c +++ b/src/listen/detail/proto_detail.c @@ -345,13 +345,6 @@ static ssize_t mod_encode(UNUSED void const *instance, request_t *request, uint8 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. @@ -587,5 +580,4 @@ fr_app_t proto_detail = { .open = mod_open, .decode = mod_decode, .encode = mod_encode, - .entry_point_set = mod_entry_point_set }; diff --git a/src/listen/dhcpv4/proto_dhcpv4.c b/src/listen/dhcpv4/proto_dhcpv4.c index 92baf28df85..cae5d5d5a41 100644 --- a/src/listen/dhcpv4/proto_dhcpv4.c +++ b/src/listen/dhcpv4/proto_dhcpv4.c @@ -336,14 +336,6 @@ static ssize_t mod_encode(void const *instance, request_t *request, uint8_t *buf 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); @@ -524,6 +516,5 @@ fr_app_t proto_dhcpv4 = { .open = mod_open, .decode = mod_decode, .encode = mod_encode, - .entry_point_set = mod_entry_point_set, .priority = mod_priority_set }; diff --git a/src/listen/dhcpv6/proto_dhcpv6.c b/src/listen/dhcpv6/proto_dhcpv6.c index 4cbf103389d..c6658d89005 100644 --- a/src/listen/dhcpv6/proto_dhcpv6.c +++ b/src/listen/dhcpv6/proto_dhcpv6.c @@ -341,13 +341,6 @@ static ssize_t mod_encode(void const *instance, request_t *request, uint8_t *buf 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); @@ -521,6 +514,5 @@ fr_app_t proto_dhcpv6 = { .open = mod_open, .decode = mod_decode, .encode = mod_encode, - .entry_point_set = mod_entry_point_set, .priority = mod_priority_set }; diff --git a/src/listen/radius/proto_radius.c b/src/listen/radius/proto_radius.c index 8923a275718..0d1c5e6438d 100644 --- a/src/listen/radius/proto_radius.c +++ b/src/listen/radius/proto_radius.c @@ -412,14 +412,6 @@ static ssize_t mod_encode(void const *instance, request_t *request, uint8_t *buf 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); @@ -601,6 +593,5 @@ fr_app_t proto_radius = { .open = mod_open, .decode = mod_decode, .encode = mod_encode, - .entry_point_set = mod_entry_point_set, .priority = mod_priority_set }; diff --git a/src/listen/tacacs/proto_tacacs.c b/src/listen/tacacs/proto_tacacs.c index c38f0fe3f6d..ab1ebf14546 100644 --- a/src/listen/tacacs/proto_tacacs.c +++ b/src/listen/tacacs/proto_tacacs.c @@ -406,13 +406,6 @@ static ssize_t mod_encode(void const *instance, request_t *request, uint8_t *buf 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); @@ -582,6 +575,5 @@ fr_app_t proto_tacacs = { .open = mod_open, .decode = mod_decode, .encode = mod_encode, - .entry_point_set = mod_entry_point_set, .priority = mod_priority_set }; diff --git a/src/listen/vmps/proto_vmps.c b/src/listen/vmps/proto_vmps.c index 963a8519d22..04077c11876 100644 --- a/src/listen/vmps/proto_vmps.c +++ b/src/listen/vmps/proto_vmps.c @@ -318,13 +318,6 @@ static ssize_t mod_encode(void const *instance, request_t *request, uint8_t *buf 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); @@ -490,6 +483,5 @@ fr_app_t proto_vmps = { .open = mod_open, .decode = mod_decode, .encode = mod_encode, - .entry_point_set = mod_entry_point_set, .priority = mod_priority_set };