static bool spawn_workers = false;
static bool just_started = true;
time_t fr_start_time = (time_t)-1;
-static rbtree_t *pl = NULL;
-static fr_event_list_t *el = NULL;
+static rbtree_t *packet_list = NULL;
+static fr_event_list_t *event_list = NULL;
static void mark_home_server_alive(REQUEST *request, home_server_t *home);
fr_event_list_t *process_global_event_list(UNUSED event_corral_t hint) {
/* Currently we do not run a second event loop for modules. */
- return el;
+ return event_list;
}
static char const *action_codes[] = {
static inline void state_machine_timer(char const *file, int line, REQUEST *request,
struct timeval *when)
{
- if (fr_event_timer_insert(el, request_timer, request, when, &request->ev) < 0) {
+ if (fr_event_timer_insert(event_list, request_timer, request, when, &request->ev) < 0) {
radlog_fatal("%s[%u]: Failed to insert event: %s", file, line, fr_strerror());
}
}
#define USEC (1000000)
#define INSERT_EVENT(_function, _ctx) \
- if (fr_event_timer_insert(el, _function, _ctx, &((_ctx)->when), &((_ctx)->ev)) < 0) { \
+ if (fr_event_timer_insert(event_list, _function, _ctx, &((_ctx)->when), &((_ctx)->ev)) < 0) { \
radlog_fatal("%s[%u]: %s", __FILE__, __LINE__, fr_strerror()); \
}
{
if (!request->in_request_hash) return;
- if (!rbtree_deletebydata(pl, &request->packet)) {
+ if (!rbtree_deletebydata(packet_list, &request->packet)) {
rad_assert(0 == 1);
}
request->in_request_hash = false;
if (request->el) {
fr_event_timer_delete(request->el, &request->ev);
} else {
- fr_event_timer_delete(el, &request->ev);
+ fr_event_timer_delete(event_list, &request->ev);
}
/*
/*
* The request is still running. Enforce max_request_time.
*/
- fr_event_list_time(&now, el);
+ fr_event_list_time(&now, event_list);
when = request->packet->timestamp;
when.tv_sec += request->root->max_request_time;
#endif
case FR_ACTION_TIMER:
- fr_event_list_time(&now, el);
+ fr_event_list_time(&now, event_list);
rad_assert(request->root->cleanup_delay > 0);
#endif
case FR_ACTION_TIMER:
- fr_event_list_time(&now, el);
+ fr_event_list_time(&now, event_list);
/*
* See if it's time to send the reply. If not,
* Quench maximum number of outstanding requests.
*/
if (main_config.max_requests &&
- ((count = rbtree_num_elements(pl)) > main_config.max_requests)) {
+ ((count = rbtree_num_elements(packet_list)) > main_config.max_requests)) {
RATE_LIMIT(ERROR("Dropping request (%d is too many): from client %s port %d - ID: %d", count,
client->shortname,
packet->src_port, packet->id);
/*
* Check for duplicates.
*/
- if (!listener->nodup && request_dup_received(listener, pl, client, packet)) return 0;
+ if (!listener->nodup && request_dup_received(listener, packet_list, client, packet)) return 0;
if (request_limit(listener, client, packet)) return 0;
* Remember the request in the list.
*/
if (!listener->nodup) {
- if (!rbtree_insert(pl, &request->packet)) {
+ if (!rbtree_insert(packet_list, &request->packet)) {
RERROR("Failed to insert request in the list of live requests: discarding it");
request_queued(request, FR_ACTION_DONE);
return 1;
if (listener->status != RAD_LISTEN_STATUS_KNOWN) return;
- fr_event_list_time(now, el);
+ fr_event_list_time(now, event_list);
switch (listener->type) {
#ifdef WITH_PROXY
* FDs.
*/
listener->status = RAD_LISTEN_STATUS_FROZEN;
- fr_event_fd_delete(el, listener->fd);
+ fr_event_fd_delete(event_list, listener->fd);
event_new_fd(listener); /* mainly set a new timer */
return;
}
}
#endif
- fr_event_list_time(&now, el);
+ fr_event_list_time(&now, event_list);
when = request->proxy->packet->timestamp;
#ifdef WITH_COA
/*
* Remove the request from any hashes
*/
- fr_event_timer_delete(el, &request->ev);
+ fr_event_timer_delete(event_list, &request->ev);
remove_from_proxy_hash(request);
/*
home->num_received_pings = 0;
gettimeofday(&home->revive_time, NULL);
- fr_event_timer_delete(el, &home->ev);
+ fr_event_timer_delete(event_list, &home->ev);
if (old_state == HOME_STATE_UNKNOWN) {
RPROXY("Home server %s port %d went from idle -> alive",
home->zombie_period_start.tv_sec = start;
home->zombie_period_start.tv_usec = USEC / 2;
- fr_event_timer_delete(el, &home->ev);
+ fr_event_timer_delete(event_list, &home->ev);
home->num_sent_pings = 0;
home->num_received_pings = 0;
buffer, sizeof(buffer)),
home->port, (int) response_window->tv_sec, (int) response_window->tv_usec);
- ping_home_server(el, now, home);
+ ping_home_server(event_list, now, home);
}
struct timeval now;
gettimeofday(&now, NULL);
- ping_home_server(el, &now, home);
+ ping_home_server(event_list, &now, home);
} else {
DEBUG("PING: Already pinging home server %s", home->log_name);
}
* Delete any outstanding events.
*/
ASSERT_MASTER;
- fr_event_timer_delete(el, &home->ev);
+ fr_event_timer_delete(event_list, &home->ev);
PROXY("Marking home server %s port %d alive again... we have no idea if it really is alive or not.",
inet_ntop(home->ipaddr.af, &home->ipaddr.addr, buffer, sizeof(buffer)),
rad_assert(request->packet->code != FR_CODE_STATUS_SERVER);
rad_assert(request->proxy->home_server != NULL);
- fr_event_list_time(&now, el);
+ fr_event_list_time(&now, event_list);
switch (action) {
case FR_ACTION_DUP:
return false;
}
- fr_event_list_time(&now, el);
+ fr_event_list_time(&now, event_list);
if (request->delay == 0) {
/*
{
rad_listen_t *listener = talloc_get_type_abort(ctx, rad_listen_t);
- rad_assert(xel == el);
+ rad_assert(xel == event_list);
if (listener->fd < 0) {
char buffer[256];
{
rad_listen_t *listener = talloc_get_type_abort(ctx, rad_listen_t);
- rad_assert(xel == el);
+ rad_assert(xel == event_list);
/*
* No error callback. Just delete the listener.
*/
if (!listener->error) {
listener->status = RAD_LISTEN_STATUS_EOL;
- fr_event_fd_delete(el, listener->fd);
+ fr_event_fd_delete(event_list, listener->fd);
return;
}
/*
* All sockets: add the FD to the event handler.
*/
- if (fr_event_fd_insert(el, this->fd, event_socket_handler, NULL, event_socket_error, this)) {
+ if (fr_event_fd_insert(event_list, this->fd, event_socket_handler, NULL, event_socket_error, this)) {
PERROR("Failed adding event handler for socket");
fr_exit(1);
}
/*
* Remove it from the list of live FD's.
*/
- fr_event_fd_delete(el, this->fd);
+ fr_event_fd_delete(event_list, this->fd);
/*
* Re-open the socket, pointing it to /dev/null.
if (this->type != RAD_LISTEN_COMMAND)
#endif
- rbtree_walk(pl, RBTREE_DELETE_ORDER, eol_listener, this);
+ rbtree_walk(packet_list, RBTREE_DELETE_ORDER, eol_listener, this);
}
if (this->status == RAD_LISTEN_STATUS_REMOVE_NOW) {
if (this->count > 0) goto keep_waiting;
- fr_event_timer_delete(el, &this->ev);
+ fr_event_timer_delete(event_list, &this->ev);
this->print(this, buffer, sizeof(buffer));
DEBUG("... cleaning up socket %s", buffer);
if ((flag & (RADIUS_SIGNAL_SELF_EXIT | RADIUS_SIGNAL_SELF_TERM)) != 0) {
if ((flag & RADIUS_SIGNAL_SELF_EXIT) != 0) {
INFO("Signalled to exit");
- fr_event_loop_exit(el, 1);
+ fr_event_loop_exit(event_list, 1);
} else {
INFO("Signalled to terminate");
- fr_event_loop_exit(el, 2);
+ fr_event_loop_exit(event_list, 2);
}
return;
last_hup = when;
trigger_exec(NULL, NULL, "server.signal.hup", true, NULL);
- fr_event_loop_exit(el, 0x80);
+ fr_event_loop_exit(event_list, 0x80);
}
#if defined(WITH_TCP) && defined(WITH_PROXY)
*/
int radius_event_init(TALLOC_CTX *ctx)
{
- el = fr_event_list_alloc(ctx, event_status, NULL);
- if (!el) return 0;
+ event_list = fr_event_list_alloc(ctx, event_status, NULL);
+ if (!event_list) return 0;
#ifdef HAVE_SYSTEMD_WATCHDOG
if (sd_watchdog_interval.tv_sec || sd_watchdog_interval.tv_usec) {
struct timeval now;
- fr_event_list_time(&now, el);
- sd_watchdog_event(el, &now, NULL);
+ fr_event_list_time(&now, event_list);
+ sd_watchdog_event(event_list, &now, NULL);
}
#endif
/*
* radius_event_init() must be called first
*/
- rad_assert(el);
+ rad_assert(event_list);
- MEM(pl = rbtree_create(NULL, packet_entry_cmp, NULL, RBTREE_FLAG_LOCK));
+ MEM(packet_list = rbtree_create(NULL, packet_entry_cmp, NULL, RBTREE_FLAG_LOCK));
}
#ifdef WITH_PROXY
* Perform thread specific module instantiation for single-threaded mode.
*/
if (!spawn_workers) {
- if (modules_thread_instantiate(main_config.config, el) < 0) {
+ if (modules_thread_instantiate(main_config.config, event_list) < 0) {
ERROR("Failed to instantiate thread-specific data for modules");
return 0;
}
}
DEBUG4("Created signal pipe. Read end FD %i, write end FD %i", self_pipe[0], self_pipe[1]);
- if (fr_event_fd_insert(el, self_pipe[0], event_signal_handler, NULL, NULL, el) < 0) {
+ if (fr_event_fd_insert(event_list, self_pipe[0], event_signal_handler, NULL, NULL, event_list) < 0) {
PERROR("Failed creating signal pipe handler");
return -1;
}
#endif
request->in_request_hash = false;
- fr_event_timer_delete(el, &request->ev);
+ fr_event_timer_delete(event_list, &request->ev);
if (main_config.talloc_memory_report) {
RDEBUG2("Cleaning up request packet ID %u with timestamp +%d",
}
#endif
- rbtree_walk(pl, RBTREE_DELETE_ORDER, request_delete_cb, NULL);
+ rbtree_walk(packet_list, RBTREE_DELETE_ORDER, request_delete_cb, NULL);
if (spawn_workers) {
/*
}
#endif
- rbtree_walk(pl, RBTREE_DELETE_ORDER, request_delete_cb, NULL);
- num = rbtree_num_elements(pl);
+ rbtree_walk(packet_list, RBTREE_DELETE_ORDER, request_delete_cb, NULL);
+ num = rbtree_num_elements(packet_list);
if (num > 0) {
ERROR("Request list has %d requests still in it.", num);
}
}
}
- talloc_free(pl);
- pl = NULL;
+ talloc_free(packet_list);
+ packet_list = NULL;
#ifdef WITH_PROXY
fr_packet_list_free(proxy_list);
if (proxy_ctx) talloc_free(proxy_ctx);
#endif
- TALLOC_FREE(el);
+ TALLOC_FREE(event_list);
if (debug_condition) talloc_free(debug_condition);
}
int radius_event_process(void)
{
- if (!el) return 0;
+ if (!event_list) return 0;
- return fr_event_loop(el);
+ return fr_event_loop(event_list);
}