initial routine refined

This commit is contained in:
Sukchan Lee 2017-02-26 21:16:03 +09:00
parent 3b8626069e
commit afcddbd798
5 changed files with 30 additions and 38 deletions

View File

@ -82,16 +82,6 @@ struct ta_conf {
};
extern struct ta_conf * ta_conf;
typedef struct _s6a_config_t {
c_uint8_t *identity;
c_uint8_t *realm;
} s6a_config_t;
CORE_DECLARE(status_t) s6a_config_init(int hss);
CORE_DECLARE(status_t) s6a_thread_start(int hss);
CORE_DECLARE(void) s6a_thread_stop();
int s6a_app_init(void);
void s6a_app_final(void);

View File

@ -61,7 +61,7 @@ status_t s6a_fd_init(const char *conffile)
return CORE_OK;
error:
CHECK_FCT_DO( fd_core_shutdown(), );
CHECK_FCT( fd_core_wait_shutdown_complete() );
CHECK_FCT_DO( fd_core_wait_shutdown_complete(), );
return CORE_ERROR;
}
@ -77,16 +77,21 @@ status_t s6a_fd_hss_init()
d_error("s6a_fd_init() failed");
return rv;
}
ret = fd_core_wait_shutdown_complete();
if (ret != 0)
{
return CORE_ERROR;
d_error("fd_core_wait_shutdown_complete() failed");
}
CHECK_FCT_DO( fd_core_wait_shutdown_complete(), return CORE_ERROR; );
return CORE_OK;
}
void s6a_fd_hss_final()
{
int ret;
s6a_app_final();
CHECK_FCT_DO( fd_core_shutdown(), d_error("fd_core_shutdown() failed") );
}
status_t s6a_fd_mme_init()
{
status_t rv;
@ -101,17 +106,13 @@ status_t s6a_fd_mme_init()
return CORE_OK;
}
void s6a_fd_final()
void s6a_fd_mme_final()
{
int ret;
s6a_app_final();
ret = fd_core_shutdown();
if (ret != 0)
{
d_error("fd_core_shutdown() failed");
}
CHECK_FCT_DO( fd_core_shutdown(), d_error("fd_core_shutdown() failed") );
CHECK_FCT_DO( fd_core_wait_shutdown_complete(),
d_error("fd_core_wait_shutdown_complete() failed"));
}
static void s6a_gnutls_log_func(int level, const char *str)

View File

@ -28,11 +28,11 @@ struct s6a_fd_config_t {
extern struct s6a_fd_config_t *s6a_fd_config;
CORE_DECLARE(status_t) s6a_fd_hss_init();
CORE_DECLARE(void) s6a_fd_hss_final();
CORE_DECLARE(status_t) s6a_fd_mme_init();
CORE_DECLARE(void) s6a_fd_final();
CORE_DECLARE(void) s6a_fd_mme_final();
CORE_DECLARE(status_t) s6a_fd_config_apply();
CORE_DECLARE(void) s6a_fd_config_init();
CORE_DECLARE(char *) s6a_fd_hss_config();
CORE_DECLARE(char *) s6a_fd_mme_config();

13
main.c
View File

@ -55,8 +55,6 @@ static int check_signal(int signum)
d_info("%s received",
signum == SIGTERM ? "SIGTERM" : "SIGINT");
s6a_fd_final();
threads_stop();
return 1;
@ -105,14 +103,14 @@ void logger_signal(int signum)
}
}
void test_signal(int signum)
void s6a_fd_hss_signal(int signum)
{
fprintf(stderr, "asdfsadfsadfsdafasdfsadf = %d\n", signum);
switch (signum)
{
case SIGTERM:
case SIGINT:
s6a_fd_final();
s6a_fd_hss_final();
break;
case SIGHUP:
break;
@ -219,9 +217,9 @@ int main(int argc, char *argv[])
/* Child */
umask(027);
core_signal(SIGINT, test_signal);
core_signal(SIGTERM, test_signal);
core_signal(SIGHUP, test_signal);
core_signal(SIGINT, s6a_fd_hss_signal);
core_signal(SIGTERM, s6a_fd_hss_signal);
core_signal(SIGHUP, s6a_fd_hss_signal);
s6a_fd_hss_init();
@ -229,7 +227,6 @@ int main(int argc, char *argv[])
}
/* Parent */
s6a_fd_mme_init();
}
{

View File

@ -7,7 +7,7 @@
#include "core_debug.h"
#include "core_thread.h"
#include "s6a_app.h"
#include "s6a_lib.h"
#include "context.h"
#include "event.h"
@ -24,14 +24,18 @@ status_t cellwire_initialize(char *config_path)
srand(time(NULL)*getpid());
rv = context_init();
if (rv != CORE_OK)
return rv;
if (rv != CORE_OK) return rv;
rv = s6a_fd_mme_init();
if (rv != CORE_OK) return rv;
return CORE_OK;
}
void cellwire_terminate(void)
{
s6a_fd_mme_final();
context_final();
}