s6a_initialize added
This commit is contained in:
parent
4058df8f43
commit
91046feb0e
|
@ -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 = \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 = \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
121
src/s6a_path.c
121
src/s6a_path.c
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 = \
|
||||
|
|
Loading…
Reference in New Issue