summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/server.c')
-rw-r--r--src/server/server.c45
1 files changed, 29 insertions, 16 deletions
diff --git a/src/server/server.c b/src/server/server.c
index d6678d2..2988732 100644
--- a/src/server/server.c
+++ b/src/server/server.c
@@ -5,22 +5,25 @@
#include <relabsd/config/parameters.h>
+#include <relabsd/device/physical_device.h>
+#include <relabsd/device/virtual_device.h>
+
/******************************************************************************/
/**** LOCAL FUNCTIONS *********************************************************/
/******************************************************************************/
static int initialize
(
- struct relabsd_server server [const restrict static 1],
- struct relabsd_parameters parameters [const static 1]
+ struct relabsd_server server [const restrict static 1]
)
{
- server->parameters = parameters;
-
if
(
relabsd_physical_device_open
(
- relabsd_parameters_get_physical_device_name(parameters),
+ relabsd_parameters_get_physical_device_file_name
+ (
+ &(server->parameters)
+ ),
&(server->physical_device)
)
< 0
@@ -29,7 +32,15 @@ static int initialize
return -1;
}
- if (relabsd_virtual_device_create(parameters, &(server->virtual_device)) < 0)
+ if
+ (
+ relabsd_virtual_device_create_from
+ (
+ &(server->parameters),
+ &(server->virtual_device)
+ )
+ < 0
+ )
{
relabsd_physical_device_close(&(server->physical_device));
@@ -39,10 +50,10 @@ static int initialize
if
(
(
- relabsd_parameters_get_communication_node_name(parameters)
+ relabsd_parameters_get_communication_node_name(&(server->parameters))
!= ((char *) NULL)
)
- && (relabsd_server_create_communication_thread(&server) < 0)
+ && (relabsd_server_create_communication_thread(server) < 0)
)
{
relabsd_virtual_device_destroy(&(server->virtual_device));
@@ -58,11 +69,11 @@ static void finalize (struct relabsd_server server [const static 1])
{
if
(
- relabsd_parameters_get_communication_node_name(server->parameters)
+ relabsd_parameters_get_communication_node_name(&(server->parameters))
!= ((char *) NULL)
)
{
- relabsd_server_join_communication_thread(&server);
+ relabsd_server_join_communication_thread(server);
}
relabsd_virtual_device_destroy(&(server->virtual_device));
@@ -72,32 +83,34 @@ static void finalize (struct relabsd_server server [const static 1])
/******************************************************************************/
/**** EXPORTED FUNCTIONS ******************************************************/
/******************************************************************************/
-int relabsd_server
+int relabsd_server_main
(
const int argc,
- const char * const argv [const restrict static argc],
- struct relabsd_parameters parameters [const static 1]
+ const char * const argv [const static argc],
+ struct relabsd_parameters parameters [const restrict static 1]
)
{
struct relabsd_server server;
+ server.parameters = *parameters;
+
RELABSD_S_DEBUG(RELABSD_DEBUG_PROGRAM_FLOW, "Started server mode.");
- if (relabsd_parameters_parse_options(argc, argv, parameters) < 0)
+ if (relabsd_parameters_parse_options(argc, argv, &(server.parameters)) < 0)
{
return -1;
}
if
(
- relabsd_parameters_get_run_as_daemon(parameters)
+ relabsd_parameters_get_run_as_daemon(&(server.parameters))
&& (relabsd_server_create_daemon() < 0)
)
{
return -2;
}
- (void) initialize(&server, parameters);
+ (void) initialize(&server);
(void) relabsd_server_conversion_loop(&server);