#define TRACE_STATE_MACHINE {}
#endif
+/*
+ * Declare a state in the state machine.
+ *
+ */
+#define STATE_MACHINE_DECL(_x) static void _x(REQUEST *request, int action)
+
+
/**
* @section request_timeline
*
#ifdef WITH_PROXY
static int request_will_proxy(REQUEST *request);
static int request_proxy(REQUEST *request, int retransmit);
-static void request_proxied(UNUSED REQUEST *request, int action);
-static void request_post_proxy(REQUEST *request, int action);
+STATE_MACHINE_DECL(request_proxied);
+STATE_MACHINE_DECL(request_post_proxy);
static int process_proxy_reply(REQUEST *request);
static void remove_from_proxy_hash(REQUEST *request);
static int insert_into_proxy_hash(REQUEST *request);
#endif
-static void request_common(UNUSED REQUEST *request, int action);
+
+STATE_MACHINE_DECL(request_common);
#if defined(HAVE_PTHREAD_H) && !defined (NDEBUG)
static int we_are_master(void)
#define ASSERT_MASTER
#endif
-static void request_reject_delay(REQUEST *request, int action);
-static void request_cleanup_delay(REQUEST *request, int action);
-static void request_running(REQUEST *request, int action);
+STATE_MACHINE_DECL(request_reject_delay);
+STATE_MACHINE_DECL(request_cleanup_delay);
+STATE_MACHINE_DECL(request_running);
#ifdef WITH_COA
static void request_coa_timer(REQUEST *request);
static void request_coa_originate(REQUEST *request);
-static void request_coa_process(REQUEST *request, int action);
+STATE_MACHINE_DECL(request_coa_process);
static void request_coa_separate(REQUEST *coa);
#endif
/*
* Only ever called from the master thread.
*/
-static void request_done(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_done)
{
struct timeval now;
}
}
-static void request_common(UNUSED REQUEST *request, int action)
+STATE_MACHINE_DECL(request_common)
{
#ifdef WITH_PROXY
char buffer[128];
}
}
-static void request_cleanup_delay(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_cleanup_delay)
{
struct timeval when;
}
}
-static void request_reject_delay(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_reject_delay)
{
TRACE_STATE_MACHINE;
ASSERT_MASTER;
return 1;
}
-static void request_finish(REQUEST *request, UNUSED int action)
+STATE_MACHINE_DECL(request_finish)
{
+ VALUE_PAIR *vp;
+
TRACE_STATE_MACHINE;
- VALUE_PAIR *vp;
+ action = action; /* -Wunused */
if (request->master_state == REQUEST_STOP_PROCESSING) return;
RDEBUG2("Finished request %u.", request->number);
}
-static void request_running(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_running)
{
TRACE_STATE_MACHINE;
return 1;
}
-static void request_post_proxy(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_post_proxy)
{
TRACE_STATE_MACHINE;
}
}
-static void request_virtual_server(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_virtual_server)
{
TRACE_STATE_MACHINE;
return 1;
}
-static void request_ping(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_ping)
{
home_server *home = request->home_server;
char buffer[128];
}
}
-static void request_proxied(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_proxied)
{
struct timeval now, when;
home_server *home = request->home_server;
}
-static void request_coa_post_proxy(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_coa_post_proxy)
{
TRACE_STATE_MACHINE;
/*
* Process CoA requests that we originated.
*/
-static void request_coa_process(REQUEST *request, int action)
+STATE_MACHINE_DECL(request_coa_process)
{
TRACE_STATE_MACHINE;