s6a_initialize added

This commit is contained in:
Sukchan Lee 2017-02-21 15:35:54 +09:00
parent 4058df8f43
commit 91046feb0e
8 changed files with 31 additions and 136 deletions

View File

@ -10,12 +10,7 @@ dist_cellwired_SOURCES = main.c symtbl.h
nodist_cellwired_SOURCES = symtbl.c
cellwired_LDADD = \
$(top_srcdir)/src/libcellwire.la \
$(top_srcdir)/lib/core/src/libcore.la \
$(top_srcdir)/lib/logger/liblogger.la \
$(top_srcdir)/lib/message/s1ap/libmessages1ap.la \
$(top_srcdir)/lib/message/nas/libmessagenas.la \
$(top_srcdir)/lib/message/s6a/libmessages6a.la
$(top_srcdir)/src/libcellwire.la
AM_CPPFLAGS = \

View File

@ -1,6 +1,6 @@
## Process this file with automake to produce Makefile.in
SUBDIRS = s1ap nas
SUBDIRS = s1ap nas s6a
MAINTAINERCLEANFILES = Makefile.in
MOSTLYCLEANFILES = *.stackdump

View File

@ -3,9 +3,11 @@
noinst_LTLIBRARIES = libmessages6a.la
libmessages6a_la_SOURCES = \
freeDiameter/extension.h
freeDiameter/extension.h \
s6a_message.h
nodist_libmessages6a_la_SOURCES = \
s6a_init.c \
dict_nasreq.c dict_dcca.c dict_dcca_3gpp.c
AM_CPPFLAGS = \

View File

@ -16,16 +16,26 @@ nodist_libcellwire_la_SOURCES = \
mme_sm.c enb_s1_sm.c
libcellwire_la_DEPENDENCIES = \
$(top_srcdir)/lib/core/src/libcore.la
$(top_srcdir)/lib/core/src/libcore.la \
$(top_srcdir)/lib/logger/liblogger.la \
$(top_srcdir)/lib/message/s1ap/libmessages1ap.la \
$(top_srcdir)/lib/message/nas/libmessagenas.la \
$(top_srcdir)/lib/message/s6a/libmessages6a.la
libcellwire_la_LIBADD = \
$(top_srcdir)/lib/core/src/libcore.la
$(top_srcdir)/lib/core/src/libcore.la \
$(top_srcdir)/lib/logger/liblogger.la \
$(top_srcdir)/lib/message/s1ap/libmessages1ap.la \
$(top_srcdir)/lib/message/nas/libmessagenas.la \
$(top_srcdir)/lib/message/s6a/libmessages6a.la
AM_CPPFLAGS = \
-I$(top_srcdir)/include \
-I$(top_srcdir)/lib/core/include \
-I$(top_srcdir)/lib/message/s1ap/asn1c \
-I$(top_srcdir)/lib/message/s1ap
-I$(top_srcdir)/lib/message/s1ap \
-I$(top_srcdir)/lib/message/nas \
-I$(top_srcdir)/lib/message/s6a
AM_CFLAGS = \
-Wall -Werror

View File

@ -7,6 +7,7 @@
#include "cellwire.h"
#include "context.h"
#include "s1ap_message.h"
#include "s6a_message.h"
static mme_ctx_t self;
@ -58,6 +59,10 @@ status_t context_init()
self.srvd_gummei.num_of_mme_code = 1;
self.srvd_gummei.mme_code[0] = 1;
/* Initialize S6A context */
s6a_set_identity("hss.cellwire.com");
s6a_set_realm("cellwire.com");
g_mme_ctx_initialized = 1;
return CORE_OK;

View File

@ -7,6 +7,8 @@
#include "core_debug.h"
#include "core_thread.h"
#include "s6a_message.h"
#include "context.h"
#include "event.h"
@ -21,6 +23,10 @@ status_t cellwire_initialize(char *config_path)
srand(time(NULL)*getpid());
rv = s6a_initialize();
if (rv != CORE_OK)
return rv;
rv = context_init();
if (rv != CORE_OK)
return rv;
@ -30,6 +36,8 @@ status_t cellwire_initialize(char *config_path)
void cellwire_terminate(void)
{
s6a_terminate();
context_final();
}

View File

@ -3,135 +3,14 @@
#include "core_debug.h"
#include "core_lib.h"
#include "freeDiameter/freeDiameter-host.h"
#include "freeDiameter/libfdcore.h"
#include "freeDiameter/extension.h"
#include "s6a_path.h"
static void s6a_gnutls_log_func(int level, const char *str)
{
d_trace(level, "gnutls[%d]: %s", level, str);
}
static void s6a_fd_logger(int printlevel, const char *format, va_list ap)
{
char buffer[HUGE_STRING_LEN];
int ret = 0;
ret = vsnprintf(buffer, HUGE_STRING_LEN, format, ap);
if (ret < 0 || ret > HUGE_STRING_LEN)
{
d_error("vsnprintf() failed");
return;
}
switch(printlevel)
{
case FD_LOG_ANNOYING:
d_trace(10, "freeDiameter[%d]: %s\n", printlevel, buffer);
break;
case FD_LOG_DEBUG:
d_trace(1, "freeDiameter[%d]: %s\n", printlevel, buffer);
break;
case FD_LOG_NOTICE:
d_info("%s", buffer);
break;
case FD_LOG_ERROR:
d_error("%s", buffer);
break;
case FD_LOG_FATAL:
{
char *except = "Initiating freeDiameter shutdown sequence";
if (strncmp(buffer, except, strlen(except)) == 0)
d_info("%s", buffer);
else
d_fatal("%s", buffer);
}
break;
default:
d_warn("%s", buffer);
break;
}
}
int fd_ext_init_dnr_entry(int major, int minor, char * conffile);
int fd_ext_init_dict_dcca_entry(int major, int minor, char * conffile);
int fd_ext_init_dict_dcca_3gpp_entry(int major, int minor, char * conffile);
status_t s6a_open()
{
int ret;
d_trace_level(&_s6a_path, 100);
gnutls_global_set_log_function(s6a_gnutls_log_func);
gnutls_global_set_log_level(TRACE_MODULE);
ret = fd_log_handler_register(s6a_fd_logger);
if (ret != 0)
{
d_error("fd_log_handler_register() failed");
return CORE_ERROR;
}
ret = fd_core_initialize();
if (ret != 0)
{
d_error("fd_core_initialize() failed");
return CORE_ERROR;
}
ret = fd_ext_init_dnr_entry(1, 2, NULL);
if (ret != 0)
{
d_error("fd_ext_init_dnr_entry() failed");
return CORE_ERROR;
}
ret = fd_ext_init_dict_dcca_entry(1, 2, NULL);
if (ret != 0)
{
d_error("fd_ext_init_dict_dcca_entry() failed");
return CORE_ERROR;
}
ret = fd_ext_init_dict_dcca_3gpp_entry(1, 2, NULL);
if (ret != 0)
{
d_error("fd_ext_init_dict_dcca_entry() failed");
return CORE_ERROR;
}
ret = fd_core_start();
if (ret != 0)
{
d_error("fd_core_start() failed");
return CORE_ERROR;
}
ret = fd_core_waitstartcomplete();
if (ret != 0)
{
d_error("fd_core_waitstartcomplete() failed");
return CORE_ERROR;
}
return CORE_OK;
}
status_t s6a_close()
{
int ret;
ret = fd_core_shutdown();
if (ret != 0)
{
d_error("fd_core_shutdown() failed");
}
ret = fd_core_wait_shutdown_complete();
if (ret != 0)
{
d_error("fd_core_wait_shutdown_complete() failed");
}
return CORE_OK;
}

View File

@ -10,10 +10,6 @@ testcellwire_SOURCES = \
enb_setup_test.c
testcellwire_LDADD = \
$(top_srcdir)/lib/core/src/libcore.la \
$(top_srcdir)/lib/message/s1ap/libmessages1ap.la \
$(top_srcdir)/lib/message/nas/libmessagenas.la \
$(top_srcdir)/lib/message/s6a/libmessages6a.la \
$(top_srcdir)/src/libcellwire.la
AM_CPPFLAGS = \